微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

ES6-新增变量常量声明标识符-let-const

ES5用var声明变量时有一些缺陷,ES6新增了let声明变量的标识符,const常量来弥补var的不足

一,let的特性

1,与var类似,但没有隐式提前-若没有声明,不能先访问变量
	console.log(a)	//报错
	let a=10
2,只能在let声明的代码块内使用
	for(let a=0;a<10;a++){
	console.log(a)//0,1,2,3,4,5,6,7,8,9
	}
	console.log(a)//报错
3,不能重复声明
	let a=100;
	let a=200;//报错

二,const

1,具有let的所有特性
2,不能再次赋值
	const a=100
	a++			//报错,不可修改常量
	console.log(a+1)  //可取值,不可修改值
3,必须在声明时初始化
	const a;	//报错
4,暂时性死区
	var PI="a"
	if(true){
		console.log(PI)		//报错,相当于用const时就把最近的代码块封锁起来,且不能提前声明,故报错
	const PI=3.21
	}

三,浏览器的另一不足-->在if的代码块中的变量声明()

console.log(a)	//undefined
console.log(fn)	//undefined
if(true){	//if的{}没有作用域之说,当判断条件为真的时候,var会提前声明,并初始化为undefined
var a=100	
function fn(){}
}

console.log(a)	//undefined
console.log(fn)	//undefined
if(false){	//当判断条件为假的时候,var也会提前声明,并初始化为undefined,此时就背离代码本身的逻辑,产生了漏洞
var a=100
function fn(){}
}

四,严格模式下 --->if里面尽量使用let声明变量

"use strict"			//严格模式下
console.log(a)	//undefined
console.log(fn)	//报错
if(false){		//false情况下
var a=100
function fn(){}
}

"use strict"			//严格模式下
console.log(a)	//undefined
console.log(fn)	//报错
if(true){		//true情况下
var a=100
function fn(){}
}
//由上面就可以看出,在if中尽量用let声明变量,而不是用var

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐