概述
let的特点大致总结有以下四点:
1.只在命令的代码块内有效,即作用域只在块级或子块中有效
如:for(let i=0;i<10;i++){
}
console.log("i:",i);//Uncaught ReferenceError: i is not defined
只在for循环块中有效
2.不存在变量提升
与var不同的是let不存在变量提升,如:
console.log(a);//undefined
var a=123
由于var存在变量提升,此处等价于:
var a;
console.log(a);
a=123;
console.log(i);//Uncaught ReferenceError: i is not defined
let i=123;
所以let不存在变量提升
3.暂时性死区,即在代码块区使用let命令声明变量之前,该变量不可用,如:
var a=123;
if(true){
a=234;
let a;//Uncaught ReferenceError: i is not defined
}
if(true){
a=123;//Uncaught ReferenceError: i is not defined
let a;
console.log("a:",a);//undefined
a=234;
console.log("a:",a);//234
}
4.不允许重复声明
function foo(){
let a=1;
let a=2;
}//Uncaught SyntaxError: Identifier 'a' has already been declared
function foo(args){
let args;
}//Identifier 'args' has already been declared
const一旦声明变量,必须立即初始化:
const a;//Uncaught SyntaxError: Missing initializer in const declaration
const声明后不可更改,对于简单类型来说是变量只想的那个内存地址不得更改,对于复杂类型来说,变量只想的内存地址视为指针,指针是固定的,但是其数据结构却不能控制,如:
const a=123;
a=234;//Uncaught SyntaxError: Missing initializer in const declaration
const a={};
a.b=123;
console.log(a.b);//123;
const b=[];
b.push('a');//成功
b.length=0;//成功
b=['aa']//Uncaught TypeError: Assignment to constant variable.
const与let一样拥有以上四个特性;PS:最近开始深入学习ES6,虽然在项目中早就已经用到,但是发现还是有很多值得深究和注意的地方,所以决定重新学习认识ES6,主要深入研究阮一峰的《ECMAScript6入门》
最后
以上就是追寻蛋挞为你收集整理的(ES6学习总结)let与const命令的全部内容,希望文章能够帮你解决(ES6学习总结)let与const命令所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
发表评论 取消回复