初探ES6
程序员文章站
2022-07-07 23:41:40
1、let声明的变量,只在let命令所在的代码块中有效(类似闭包,是块级作用域); 2、for循环在设置循环变量的那部分是一个父作用域,而循环体内部是一个单独的子作用域: 例:for (let i = 0; i < 3; i++) { let i = 'abc'; console.log(i); } ......
1、let声明的变量,只在let命令所在的代码块中有效(类似闭包,是块级作用域);
2、for
循环在设置循环变量的那部分是一个父作用域,而循环体内部是一个单独的子作用域:
例:for (let i = 0; i < 3; i++) {
let i = 'abc';
console.log(i);
} // abc // abc // abc 输出3次abc,表明两个i不在同一个作用域中;
3、暂时性死区问题;
4、let 不允许重复声明,不允许在函数内部重新声明参数:
function fun(arg){
let arg; // 报错
}
5、const声明只读常亮(必须初始化),作用域与let命令相同;
6、const声明的变量,存储的不是变量的值,而是变量的地址:
const foo = {};
foo.prop="name"; //添加一个属性且复制 可以成功
foo = {}; //相当于重新赋值,报错 TypeError: "foo" is read-only
数组同理,如果真的想将对象冻结,应该使用Object.freeze
方法
const foo = Object.freeze({});
上一篇: python中的赋值与深浅拷贝