ES6(一)

来自:http://h5monkey.github.io/2015/05/09/ES6%EF%BC%88%E4%B8%80%EF%BC%89/

基本语法

let是块级作用域,函数内部使用let定义后,对函数外部无影响。

// 错误写法 变量提升不可以
console.log(b);
let b = 3;
// 错误写法 变量不可重复赋值
let a = 4;
let a = 5
console.log(a)
 var btns = document.querySelectorAll("button");
    for (var i = 0; i < btns.length; i++) {
        btns[i].onclick = function() {
            console.log(i) //永远等于i=5
        }
    }
    //改变
    for (var i = 0; i < btns.length; i++) {
        btns[i].index = i;
        btns[i].onclick = function() {
            console.log(this.index)
        }
    }
    //改变
    for (var i = 0; i < btns.length; i++) {
        (function(i) {
            btns[i].onclick = function() {
                console.log(i)
            }
        })(i);
    }
    //改变
    for (let i = 0; i < btns.length; i++) {
        btns[i].onclick = function() {
            console.log(i) //let创建出作用域块
        }
    }
const定义的变量不可以修改,而且必须初始化。


  //在循环语句之内是一个父作用域,在循环体中是一个子作用域
    //例子:
    for (let i = 0; i < 3; i++) {
    let i = 10;
    console.log(i);
    }
    console.log(i)

const

 //const声明属性的时候必须赋值
    var a;
    let b;
    const c; //报错
    
    //改变常量的数据
    const a = 10;
    a = {}; //浏览器会报错  改变数据
    const a = {
    obj: 10
    };
    a.obj = 20; //不会报错  只是修改对象数据  没有改变obj的引用





原文地址:https://www.cnblogs.com/h5monkey/p/6898456.html