网站首页 » 前端开发 » JavaScript » 《ES6 标准入门》学习笔记(第二章:let 和 const 命令)
上一篇:
下一篇:

《ES6 标准入门》学习笔记(第二章:let 和 const 命令)

ES6 标准入门-第二章主要是讲了 let 和 const 以及 块级作用域。

let 和 const 命令

ES6 标准入门-读书笔记(第二章)

从上图可以看出,let 和 const 有很多相似之处,可以把它们看作是一对孪生兄弟。let 中【基本用法】的第一点,我们必需要知道用 let 声明的变量(比如:i) 会有两个不同的作用域,请看下面这个例子:

let 与 var 的区别
// var 声明
for(var i=0;i<5;i++){ // 这个 i 为父级作用域
    var i = 5;
    console.log(i); // 打印出一个 5
}
console.log(i); // 打印出一个 6

// let 声明
for(let i=0;i<5;i++){ // 这个 i 为父级作用域
    let i = 5; // 这个 i 为子级作用域
    console.log(i); // 打印出 5 个 5
}
console.log(i); // Uncaught ReferenceError: i is not defined

第一个 for 循环中的 i 属于全局作用下的变量。而第二个 for 循环中就会i就会有两个不同的作用域,并且都不属于全局作用域。

块级作用域

ES6 标准入门-读书笔记(第二章)

在【块级作用域和函数声明】中的第二点,第三点在这里我们可以用一个例子来说明:

看这里
function fn(){console.log(1);}
(function (){
    if(false){
       function fn(){console.log(2);}
    }
    fn(); // Uncaught TypeError: fn is not a function
}())

// 上面的代码相当于:
function fn(){console.log(1);}
(function (){
    var fn = undefined;
    if(false){
       function fn(){console.log(2);}
    }
    fn(); // Uncaught TypeError: fn is not a function
}())

所以如果我们想在立即执行函数里调用最外面的方法的话,我们可以像下面这样写:

看这里
function fn(){console.log(1);}
(function (){
    if(false){
       let fn = function (){console.log(2);}
    }
    fn(); // 1
}())

也就是用表达式声明的形式来实现。书中还说到一点:“ES6 的块级作用域允许声明函数的规则只在使用大括号的情况下成立,如果没有使用大括号,就会报错”,这一点对于喜欢简写 if 语句的朋友就需要特别注意下。

  • 微信扫一扫,赏我

  • 支付宝扫一扫,赏我

声明

原创文章,不经本站同意,不得以任何形式转载,如有不便,请多多包涵!

本文永久链接:http://yunkus.com/es6-primer-notes-part2/

Leave a Reply

Your email address will not be published. Required fields are marked *

评论 END