ES6-----let、const

let

1、let  声明的变量只在 let 命令所在的代码块内有效(块级作用域、局部作用)

2、基本用法:是一个代码块,用{}括起来的

 例如 var fn=function(){}函数     {}  if(){}  for(){} 代码块

//{}括起来的代码块
{let a = 0;console.log(a);   // 0
}
console.log(a);   // 报错 ReferenceError: a is not defined

3、特点代码块内有效不能重复声明不存在变量提升

​for(var i=0;i<10;i++){// console.log(i)function fn(){console.log(i)}arr.push(fn)}arr[0]() //若用var申明,调用数组的每一个函数都将打印10​
{let a = 0;var b = 1;}
console.log(b); // 1
console.log(a); // ReferenceError: a is not defined
var a = 1;
var a = 2;
console.log(a);  // 2let b = 3;
let b = 4;
console.log(b);  // Identifier 'a' has already been declared

 不同于var,var会变量提升

 console.log(a);  //undefined
var a = "banana";console.log(b);  //ReferenceError: b is not defined
let b = "apple";

不会成为window的属性,即在全局作用域中用let声明的变量,使用window.变量名不会生效 

 let a=10
consle.log(window.a)  //undefined

const

1、const 声明一个只读变量,声明之后不允许改变。意味着,一旦声明必须初始化(let不用),否则会报错。

注意:但是如果声明引用数据类型,则可以修改其属性的值 

			const a=100;var a=200 //const a=200console.log(a) //报错const a;a=100;console.log(a) //报错
			const lion={name:"小羊",age:21};lion.name="小狮子";console.log(lion);//小狮子

 

2、暂时性死区: ES6 明确规定,代码块内如果存在 let 或者 const,代码块会对这些命令声明的变量从块的开始就形成一个封闭作用域。代码块内,在声明变量 PI 之前使用它会报错。

var PI = "a";
if(true){console.log(PI);  // ReferenceError: PI is not definedconst PI = "3.1415926";
}

注意点

  • let 和const 关键词声明的变量不具备变量提升(hoisting)特性

  • let 和 const 声明只在最靠近的一个块中(花括号内)有效

  • 当使用常量 const 声明时,请使用大写变量,如:CAPITAL_CASING

  • const 在声明时必须被赋值(初始化)


本文来自互联网用户投稿,文章观点仅代表作者本人,不代表本站立场,不承担相关法律责任。如若转载,请注明出处。 如若内容造成侵权/违法违规/事实不符,请点击【内容举报】进行投诉反馈!

相关文章

立即
投稿

微信公众账号

微信扫一扫加关注

返回
顶部