目录
#博学谷IT学习技术支持#
ES6 的新增语法
1.let
ES6中新增的用于声明变量的关键字。
1.let声明的变量只在所处于的块级有效
if (true) {let a = 10;}console.log(a) // a is not defined
注意:使用let关键字声明的变量才具有块级作用域,使用var声明的变量不具备块级作用域特性。
2.不存在变量提升
console.log(a); // a is not definedlet a = 20;
3.暂时性死区
var tmp = 123;if (true) {tmp = 'abc';let tmp;}
4.面试题
<script>
//此题的关键点在于变量i是全局的,函数执行时输出的都是全局作用域下的i值。
var arr = [];
for (var i = 0; i < 2; i++) {
arr[i] = function () {
console.log(i);
};
}
arr[0](); //3
arr[1](); //3
// 此题的关键点在于每次循环都会产生一个块级作用域,每个块级作用域中的变量都是不同的,函数执行时输出的是自己上一级(循环产生的块级作用域)作用域下的i值
let arr = [];
for (let i = 0; i < 2; i++) {
arr[i] = function () {
console.log(i);
}
}
arr[0](); //0
arr[1](); //1
</script>
2、const
作用:声明常量,常量就是值(内存地址)不能变化的量。
1.具有块级作用域
if (true) {const a = 10;}console.log(a) // a is not defined
2.声明常量时必须赋值
const PI ; // Missing initializer in const declaration
3.常量赋值后,值不能修改。
const PI = 3.14;PI = 100; // Assignment to constant variable.
const ary = [100, 200];ary[0] = 'a';ary[1] = 'b';console.log(ary); // ['a', 'b'];ary = ['a', 'b']; // Assignment to constant variable.