let是ES6新增的指令,她得多用范围是在块作用于内有效比:
在花括号外输出定义的str会报错,但是单独输出age是正确的。
此外,var命令会发生”变量提升“现象,就是说你可以先使用变量,然后再声明,值为undefined。这种现象多多少少是有些奇怪的,按照一般的逻辑,变量应该在声明语句之后才可以使用。但是是用let是完全符合这个逻辑的,即先声明变量,然后再使用,不然会报错:
上面代码中,变量age用var命令声明,会发生变量提升,即在运行前,变量age已经存在了,但是没有值,所以会输出undefined。变量sex用let命令声明,先声明后输出是正确的。但是变量nickname先输出,会报错,这表示在声明它之前,变量nickname是不存在的,这时如果用到它,就会抛出一个错误。