js中声明变量的关键字(const,let,var)

const

特点:

  • const不允许在同一作用域重复声明,块级作用域
  • 暂时性死区,在声明之前,该变量是不可用的
  • const声明的是一个只读变量,声明之后不能改变其值,一旦声明必须初始化
  • 但是const定义的对象属性是可以修改的

块作用域由{}包括,if语句和for语句里面的{}也输入块作用域

对象是引用类型的,const定义的对象是保存指向对象的指针,这里的“不变”是指对象的指针不变,而修改对象中的属性不会使对对象的指针发生变化。

    const a=3
    {
        const a=1
        console.log(a)//1
    }
    {
        //a是对象,可以修改对象的属性
        const a={
            name: 1
        }
        console.log(a)//{ name: '1' }
        a.name=2
        console.log(a)//{ name: '2' }
    }
    console.log(a);//3

var

  • 变量提升,声明的变了会自动提升到他所在作用域的顶部
function fun() {
	console.log(variable); 
	var variable = "hello";
}
fun(); // 结果是 undefined

因为上面的代码等同于:

function fun() {
	var variable;
	console.log(variable); 
	variable = "hello";
}
fun(); // 结果是 undefined
  •  var可以重复声明同一个变量
  • 在使用 var 的时候,最常见的问题就是对迭代变量的奇特声明和修改
for (var i = 0; i < 5; ++i) { 
 setTimeout(() => console.log(i), 0) 
} 
// 你可能以为会输出 0、1、2、3、4 
// 实际上会输出 5、5、5、5、5

let

  • 块级作用域 
  • 不允许在同一个块作用域中重复声明变量
  • 暂时性死区

let和var的区别:

for (var i = 0; i < 5; ++i) { 
 // 循环逻辑 
} 
console.log(i); // 5


for (let j = 0; j < 5; ++j) { 
 // 循环逻辑
} 
console.log(j); // ReferenceError: j 没有定义

声明风格

尽量不使用var
const优先,let次之

使用const声明可以让浏览器运行时强制保持变量不变,也可以让静态代码提前发现不合格的声明。

你可能感兴趣的:(javascript,前端,开发语言)