标签:ES6 const log let var console fn undefined
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
标签:ES6,const,log,let,var,console,fn,undefined 来源: https://www.cnblogs.com/xuawei/p/16468308.html
本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享; 2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关; 3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关; 4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除; 5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。