ES6学习之- let 和 const 命令
仅做个人学习交流
参考文章:http://es6.ruanyifeng.com
前提:
let 和 const 都是 ES6 中声明变量的方法。 ES6中声明变量的方法有6种:var 、function 、let、const 、class 、import 。
let 和 const 声明的变量都是局部变量。只在块级区域生效。
块级区域:
1、“\{......\}”符号进行声明的区域;
2、循环函数内部区域;
块级区域的作用:
1、防止区域数据的泄露到全局变量中;
2、防止内层变量污染外层变量;
3、注意:ES5 中块级区域声明的函数将会被提升至顶部,所以为了确保最终的效果,建议使用声明函数表达式,少用函数声明式;
// 块级作用域内部的函数声明语句,建议不要使用
{
let a = 'secret';
function f() {
return a;
}
}
// 块级作用域内部,优先使用函数表达式
{
let a = 'secret';
let f = function () {
return a;
};
}
let:
1、 let 是用来声明变量的,他的使用方法和 var 类似,都是可以通过“=”进行赋值的。不同的是 var 声明的是一个全局变量,而 let 声明的变量只在块级区域有效;
2、let 不可以重复声明同一个名称的变量;
3、声明变量之前不可以进行使用;(区别于 var ,var 声明变量前使用会得到一个 undefined 的结果,而 let 类型的变量则会报错);
4、let 声明一个 var 同名的变量时,let 的优先级更高(在块级区域内);
const:
1、const 是用来声明一个常量的,常量值是不可以修改的;
2、const 声明的常量是一个块级常量;
3、const 声明的变量值是通过指针指向特定的内存地址,也就是说如果指向的是一个对象,其内存地址不变的情况下,属性的变化是可以的(如果想要锁定一个对象,需要用到 freeze(object) 方法进行冻结,同时也可以通过 constantize(object\[attr\]) 的方法对属性进行冻结);
var constantize = (obj) => {
// 对 obj 进行冻结,冻结之后 obj 将不能添加新的属性,但是原有属性可以进行修改;
Object.freeze(obj);
// 对 obj 的属性进行冻结,属性值不可修改;
Object.keys(obj).forEach( (key, i) => {
if ( typeof obj[key] === 'object' ) {
constantize( obj[key] );
}
});};
还没有评论,来说两句吧...