let
1.let用来声明变量,相当于var,但是let声明的变量是具有块级作用域的
{
let a = 1;
console.log(a)
//打印结果是1
}
console.log(a)
//打印报错
上述代码在对象中使用let声明变量a,所以变量a只在当前代码块中生效,在作用域外会报错
衍生问题:变量提升
//在ES5中
console.log(a) //undefined
var a = 1;
//实际执行的过程
var a; //此过程为变量提升
console.log(a) //undefined
var a = 1
所以Let不存在变量提升,在let声明变量以外的作用域使用该变量都是会报错,可以理解为暂时性死区
2.不可以在同一作用域内重复声明变量
3.块级作用域
ES5只有全局和局部作用局两种,这样就会存在内部变量覆盖外部变量的情况,或者在循环的过程中的变量覆盖 所以在ES6中新增了块级作用域,常用于立即执行的匿名函数,ES6 的块级作用域必须有大括号
// IIFE 写法
(function () {
var tmp = ...;
...
}());
// 块级作用域写法
{
let tmp = ...;
...
}
const
1.const声明一个只读的常量
const a = 666;
PI // 666
PI = 3;
// TypeError: Assignment to constant variable.
const声明的是只读常量,所以已经定义无法修改,而且已经定义就必须马上初始化赋值,不可以等到以后再赋值,并且const和let相同,都具有块级作用域,而且也不存在变量提升,所以也存在暂时性死区
部分文案摘自 es6.ruanyifeng.com/#docs/let
常见问题FAQ
- 免费下载或者VIP会员专享资源能否直接商用?
- 本站所有资源版权均属于原作者所有,这里所提供资源均只能用于参考学习用,请勿直接商用。若由于商用引起版权纠纷,一切责任均由使用者承担。更多说明请参考 VIP介绍。
- 提示下载完但解压或打开不了?
- 找不到素材资源介绍文章里的示例图片?
- 模板不会安装或需要功能定制以及二次开发?
发表评论
还没有评论,快来抢沙发吧!