标签:style 不可 保存 function 函数声明 表达式 重复 lan bin
let
声明的变量只在它所在的代码块有效。let
不允许在相同作用域内,重复声明同一个变量let
命令,它所声明的变量就“绑定”(binding)这个区域,不再受外部的影响, 定义之前不能使用。for
循环的计数器,就很合适使用let
命令。
for (let i = 0; i < 10; i++) {let i = ‘abc‘;}
// 变量i
是let
声明的,当前的i
只在本轮循环有效,每一次循环的i
其实都是一个新的变量
// 设置循环变量的那部分是一个父作用域,而循环体内部是一个单独的子作用域
//死区: if (true) { // TDZ开始 tmp = ‘abc‘; // ReferenceError console.log(tmp); // ReferenceError let tmp; // TDZ结束 console.log(tmp); // undefined tmp = 123; console.log(tmp); // 123 }
const
声明一个只读的常量。一旦声明,常量的值就不能改变const
一旦声明变量,就必须立即初始化,不能留到以后赋值const,变量指向的那个内存地址所保存的数据不得改动,
只能保证这个指针是固定的,至于它指向的数据结构是不是可变的。因此,将一个对象声明为常量必须非常小心。
// 冻结对象:不可添删属性 const foo = Object.freeze({});
// 冻结对象,并冻结对象属性
var constantize = (obj) => { Object.freeze(obj); Object.keys(obj).forEach( (key, i) => { if ( typeof obj[key] === ‘object‘ ) { constantize( obj[key] ); } }); };
es6 - 一共有 6 种声明变量的方法(var, function, let, const, class, import)
标签:style 不可 保存 function 函数声明 表达式 重复 lan bin
原文地址:https://www.cnblogs.com/avidya/p/10595588.html