es6 学习笔记(let 、const)

1、 let 命令:用来声明一个变量,和 var 相似

2、const 命令 : 用来声明一个常量,常量就是不可以变化的量

用 let 声明变量的注意事项 : 

1、 用 let 声明的变量,只在变量声明的代码块内有效

{
    let a = 1;
    var b = 2;
    console.log(a);         // 1
}
console.log(b);         // 2
console.log(a);         // a is not defined

2、用 let 声明的变量,在域解析的时候不会提前

console.log(a);
var a = 3;              // undefined
console.log(b);          // Uncaught ReferenceError: b is not defined
let b = 5;
typeof c;
let c = 10;         // c is not defined
let f = 10;

function fn() {
    f = 7;    
    let f = 2;
}
fn();      // Uncaught ReferenceError: f is not defined

3、let 不允许在同一个作用域下声明已经存在的变量

var a = 10;
let a;      // Uncaught SyntaxError: Identifier 'a' has already been declared
let b = 10;
let b = 6;      // Uncaught SyntaxError: Identifier 'b' has already been declared
var btns =  document.querySelectorAll("button");

for(var i = 0; i < btns.length; i++){
    btns[i].onclick = function () {
        console.log(i);             // 点击左右按钮都是 5
    }
}

方法一 : 采用立即执行函数

var btns =  document.querySelectorAll("button");

for(var i = 0; i < btns.length; i++){
    (function (i) {
        btns[i].onclick = function () {
            console.log(i);
        }
    })(i)      
}

方法二:

var btns =  document.querySelectorAll("button");

for(var i = 0; i < btns.length; i++){
    btns[i].index = i;
    btns[i].onclick = function () {
        console.log(this.index);
    }
}

方法三 : 使用 let 来声明变量 ,在循环语句之内是一个父作用域,在循环体之中是一个子作用域

var btns =  document.querySelectorAll("button");

for(let i = 0; i < btns.length; i++){
    btns[i].onclick = function () {
        console.log(i);
    }
}

const 

1、const 声明的常量只在其所在的代码块内有效

2、const 声明的常量不会被提升

3、const 命令不能声明已经被声明的常量或者变量

4、const 声明常量的时候必须要赋值

5、const 声明的常量存储的是简单的数据类型时不可改变其值,如果储存的是对象,那么引用不可以被改变,至于对象里面的数据是否变化,则没有关系

const a = 6;
a = {};         // Uncaught TypeError: Assignment to constant variable.
const obj = { a : 10 };
obj.a = 20;
console.log(obj.a);         // 20
原文地址:https://www.cnblogs.com/debra/p/7080819.html