es6新语法:let、const

关于浏览器的兼容情况,可以访问can i use进行查询。

目前的主要方式还是通过使用Babel编译来解决兼容性问题。

我们目前使用Babel将ES6的代码兼容到了IE8,但这是在放弃某些新特性的条件下(例如export * from "xxx"等)。

let声明变量,可以说是具有作用域的var,用于声明变量,主要规则如下:

1、let声明的变量拥有块级作用域

{
let i=1;
console.log(i);//1
}
console.log(i);//Uncaught ReferenceError: i is not defined

2、同一作用域,let变量应该先声明再调用,同时不能重复声明

{
    console.log(t1); // undefined
    var t1 = "var声明的变量";
    console.log(t2); // Uncaught ReferenceError: t2 is not defined
    let t2 = "let声明的变量"
}
{
    let t3 = "第一次声明";
    console.log(t3); // 直接报错 Uncaught SyntaxError: Identifier 't3' has already been declared
    let t3 = "第二次声明"
}

3、for循环中,let声明的变量在循环内部的独立作用域会形成对应的副本

var a=[];
for(var i=0;i<10;i++){
   a[i] = fucntion(){
       console.log('i的值='+i);    
    }        
}
console.log(i);
a[6]();//i的值是10,  无论a[n],i都是10

var a = [];
for (let i = 0; i < 10; i++) {
    a[i] = function() {
        console.log("i的值="+i);
    };
}
// console.log(i) // 未定义 报错 Uncaught ReferenceError: i is not defined
a[6](); // i的值=6

const 声明静态变量,声明以后不能再修改,其他用法和let一样

const PI; //报错 Uncaught SyntaxError: Missing initializer in const declaration
const PI = 3.14; // 正确用法
PI = 3.1415; //报错,重复定义 Uncaught TypeError: Assignment to constant variable
原文地址:https://www.cnblogs.com/zsz179248496/p/6825107.html