var(函数作用域)
当使用var定义一个变量的时候,可以用来保存任何类型的值(未初始化时,保存一个undefined)
function test() {
var a = 1;
console.log(a); // 1
}
test()
console.log(a); // Uncaught ReferenceError: a is not defined
使用 var 定义的变量会称为函数的局部变量。
var 声明提升
function fun() {
console.log(age);
var age = 18;
}
fun(); // undefined
上述代码等价于下列代码
function fun() {
var age;
console.log(age);
age = 18;
}
fun(); // undefined
所谓声明提升就是使用 var 定义变量的时候,会将所有的变量声明都拉到函数作用域的顶部。
let(块级作用域)
块级作用域就是 {} 包裹的作用域。
暂时性死区
就是不会声明提升。
console.log(age); // 报错
let age = 18;
全局声明
就是定义在全局作用域下的变量,会不会称为window的属性
var age = 18;
console.log(window.age); // 18
let age = 18;
console.log(window.age); // undefined
这是因为let定义的变量只能在页面的生命周期内持续。
const(块级作用域)
定义一个常量的意思。一旦定义后不能修改值。(
注意:简单数据类型不能修改,引用数据类型内部可以修改
)
与let的区别:在声明变量的时候必须初始化变量。
同样存在暂时性死区问题。
版权声明:本文为s1594217816原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。