ES6中let

作者: Bookish倩宝 | 来源:发表于2016-08-08 15:48 被阅读0次

ES6里增加了一个let,可以在{}, if, for里声明。用法同var,但作用域限定在块级,let声明的变量不存在变量提升。

//--- 词法作用域
{
    let a = 10;
    var b = 10;
}
console.log(a);  //报错
console.log(b); //10

let声明的变量在作用域外是访问不到的

块级作用域 if

function getVal(bool){
  if(bool){
    let val = 'red';
    //访问到val
    return val;
  }else{
    //访问不到val
  }
  //访问不到val
}

块级作用域 for

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

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

块级作用域,存的不是引用,直接是i的值
** 变量提升(先使用后声明)**

function do_something() {
    console.log(foo);
    var foo = 2;
}

变量val先使用后声明,输出undefined,也不报错。

function do_something() {
    console.log(foo);
    let foo = 2;
}
//报错

let定义变量不能重复声明

{
    let a = 10;
    var a = 1;
}
// 报错
{
    let a = 10;
    let a = 1;
}
//报错

let的声明的变量不会挂载到全局属性

var a = 1;
window.a; //1
let b = 1;
window.b; //undefined

相关文章

  • ES6中的let和const命令

    ES6中的let和const命令 let命令 ES6 新增了let命令,用来声明变量。它的用法类似于var,但是...

  • let 和 const 命令

    ES6学习笔记1、let命令ES6中新增了let,用于声明变量,与var类似,但let声明只是在其block(块)...

  • js 变量提升(3)

    ### ES6中let创建的变量不存在变量提升 /* * 在ES6中基于let或者CONST等方式创建变量或者函数...

  • ES6特性学习(一)

    本篇对ES6的let、const进行了学习和整理,以及与var做一下简单的对比。 let命令 let是ES6中新增...

  • ES6(let 与 const)

    ES6中引入了let 和 const来声明变量,我们来看下let 和 const 的使用 一、let let定义的...

  • ES6,ES5,TypeScript区别

    下面是一些ES6中的新的特点: ES6中的let命令,声明变量,用法和var差不多,但是let是为JavaScri...

  • ES6

    一、let和const 1.let 在 js/es6 中,用let在for循环中声明的变量,在外部无法访问 let...

  • ES6之 let 和 const 命令

    ES6 之 let 和 const 命令 1、let 命令 1.1、基本用法 ES6 新增了let命令,用来声明变...

  • ES6基础—let与var/const/对象字面量的增强写法

    为了弥补JavaScript中var的缺陷,所以在ES6中有了let let与var的区别 1.let定义的变量存...

  • ES6中的新语法规范数组去重

    ES6中的新语法规范 let / const class 创建类 import / export :ES6 Mod...

网友评论

      本文标题:ES6中let

      本文链接:https://www.haomeiwen.com/subject/pnrrsttx.html