JavaScript 学习之 -- let 和 const
let 和 var:let定义的变量,有块级作用域的概念,而var定义的变量则没有。
看如下两个函数:
函数1:
var arr = [];
function f() {
for (var i = 0; i < 5; i++) {
arr.push(function () {
console.log(i);
})
}
}
f();
arr[2]();
这个时候,arr[2]()的值是5
函数2
var arr = [];
function f() {
for (let i = 0; i < 5; i++) {
arr.push(function () {
console.log(i);
})
}
}
f();
arr[2]();
这个时候,arr[2]()的值是2。因为let i=1; 和之前let i=0;出在不同的作用域中,所以两者不会相互影响。所以arr[1]()的值是1,arr[2]()的值是2。
const:
const定义常量,指的是对物理内存地址不可更改。
例如:const a = 12;
a = 15;
则会抛出异常。
但是如果是如下方式:
const a = {
name:'Peter'
}
a.name = 'Wujin';
a.email = "123456789@qq.com";
console.log(a);
则不会抛出异常。
如果想彻底冻结const常量,则可使用Object.freeze()函数。
如下:
const a = {
name:'Peter'
}
a.name = 'Wujin';
a.email = "123456789@qq.com";
// 冻结内存地址
Object.freeze(a);
a.name = 'Peter'
console.log(a);
此时抛出异常
posted on 2017-02-24 16:33 wujinpeter 阅读(79) 评论(0) 收藏 举报
浙公网安备 33010602011771号