ES6 let const笔记

1.let在代码块内有效(块级作用域)

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

 

2.if for循环问题

if循环

if(true){
        var a = 1;
    }
console.log(a);//1

if(false){
        var b = 1;
    }
console.log(b);//undefined

if(true){
        let c = 1;
    }
    if(false){
        let d = 2;
    }
    console.log(c);//Uncaught ReferenceError: d is not defined
    console.log(d);//Uncaught ReferenceError: d is not defined

  for循环

for(var i=1;i<10;i++){

    }
console.log(i);//10

for(let j=1;i<10;i++){

    }
console.log(j);//Uncaught ReferenceError: j is not defined

  for循环

var a = [];
    for (var i = 0; i < 10; i++) {
        a[i] = i;
    }
    console.log(a[6]);//6


var a = [];
    for (var i = 0; i < 10; i++) {
        a[i] = function () {
            return i;
        };  
    }
    console.log(a[6]());//10

 var a = [];
    for (var i = 0; i < 10; i++) {
        a[i] = (function () {
            return i;
        })();
    }
    console.log(a[6]);//6

var a = [];
    for (let i = 0; i < 10; i++) {
        a[i] = function () {
            return i;
        };  
    }
    console.log(a[6]());//6

  3.无变量声明提升,存在死区,不能重复申明变量(先申明,后使用)

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

console.log(b);//undefined
var b=1;

  

    var a=1;
    let a=2;
    console.log(a);//Uncaught TypeError: Duplicate declaration "a"

  4.const申明变量不能改变(常量),特性与let类似[块级作用域],复合型变量指向地址,,地址固定,内容是可变的

    const a = [];
    a.push(1);
    a.push(2);
    console.log(a);//[1,2]

  5.跨模块常量,类似于Node的export import

// a.js 模块
export const A = 1;
export const B = 2;

// b.js 模块
import * as constants from './a';
console.log(constants.A); // 1
console.log(constants.B); // 2

// c.js 模块
import {A, B} from './a';
console.log(A); // 1
console.log(B); // 2

  

 

posted on 2016-08-19 10:11  carlyin  阅读(131)  评论(0)    收藏  举报

导航