let 、const的作用命令相同,只是申明所在块级作用域有效。const申明变量不得改变值,一旦申明后必须初始化。
let 命令
- 基本用法
var a=[];
for(var i =0;i< 10;i++){
a[i]=function () {
console.info(i);
}
}
a[6]();//10
上面代码代码,变量i 用户var申明,在全局范围有效。每一次循环,变量i的值都会发生改变,而循环内的数组a内部console.info(i),指向全局i。所以最后输出10。
let申明使用
for(let i =0;i< 10;i++){
a[i]=function () {
console.info(i);
}
}
a[6]();//6
代码变量i是let申明,所以i只在本轮循环有效,每次循环都是新的变量,所以最后输出6。
- 不存在变量提升
console.log(foo);//undefined;
var foo = 2;
console.log(bar);//报错
let bar = 2;
代码变量foo用var申明,发生变量提升,脚本开始执行已经存在,但是没有值。变量bar用let申明,不会发生提升,表示使用它之前,变量bar不存在会报错。
const命令
- const实际上并不是值不得改动,而是变量指向的那个内存地址所保存的数据不能改动。基本数据类型的数据,值保存的那个内存地址,等同于常量。对象申明常量就不能控制了。
// 为 foo 添加一个属性,可以成功
foo.prop = 123;
foo.prop // 123
// 将 foo 指向另一个对象,就会报错
foo = {}; // TypeError: "foo" is read-only
总结
typescript函数内变量使用let申明,对于一些常量、箭头函数、import 引用变量名使用const申明;
原博客地址
https://es6.ruanyifeng.com/?search=map&x=0&y=0#docs/let