JavaScript里一切皆对象,一切皆可存在变量里
1、JS区划大小写
2、JS中指令被称为语句Statement,分号(;
)分隔
声明
1、var
声明一个变量
2、let
声明一个块作用域局部变量
3、const
声明一个块作用域只读常量
变量
JavaScript 标识符(变量名)必须以字母、下划线(_)或者美元符号($)开头;后续的字符也可以是数字(0-9)
变量求值
用 var
或 let
语句声明的变量,如果没有赋初始值,则其值为 undefined
;
undefined
值在布尔类型环境中会被当作 false
,在数值类型环境中被转化为NAN
;
空值 null
在数值类型环境中会被当作0
来对待,而布尔类型环境中会被当作 false
;
变量作用域
变量的提升
JS中可以先使用变量稍后声明变量不会引发异常!这一概念就是变量提升。注意提升后的变量将返回undefined
console.log(x === undefined); // true
var x = 3;
//================
var myvar = "my value";
(function() {
console.log(myvar); // undefined
var myvar = "local value";
})();
在ES6中let(const)
将不会提升变量到代码块的顶部
console.log(x); // ReferenceError 引用错误
let x = 3;
函数提升
对于函数来说,函数声明会被提升到顶部,函数表达式不会被提升
/* 函数声明 */
foo(); // "bar"
function foo() {
console.log("bar");
}
//===========
/* 函数表达式 */
baz(); // 类型错误:baz 不是一个函数
var baz = function() {
console.log("bar2");
};
全局变量
全局变量是全局对象(网页中是 window
)的属性,可以用window.variable
的语法来设置和访问全局变量
常量
对象和数组被赋值为常量不受保护!