es6中的let命令和箭头函数

let 命令

基本用法

ES6 新增了let命令,用来声明变量。它的用法类似于var,但是所声明的变量,只在let命令所在的代码块内有效。

{
 let a = 10;
 var b = 1;
}

 a会输出define

   而b则输出1

上面代码在代码块之中,分别用let和var声明了两个变量。然后在代码块之外调用这两个变量,结果let声明的变量报错,var声明的变量返回了正确的值。这表明,let声明的变量只在它所在的代码块有效。

for循环的计数器,就很合适使用let命令。

不允许重复声明

let不允许在相同作用域内,重复声明同一个变量。

// 报错
function func() {
 let a = 10;
 var a = 1;
}
 
// 报错
function func() {
 let a = 10;
 let a = 1;
}

  

ES6 的块级作用域

let实际上为 JavaScript 新增了块级作用域。

ES6 允许块级作用域的任意嵌套。

{{{{
 {let insane = 'Hello World'}
 console.log(insane); // 报错
}}}};

  

 

上面代码使用了一个五层的块级作用域,每一层都是一个单独的作用域。第四层作用域无法读取第五层作用域的内部变量。

内层作用域可以定义外层作用域的同名变量。

 

 

箭头函数

ES6 允许使用“箭头”(=>)定义函数。

 

  1. 基本特点

    (1). 箭头函数this为父作用域的this,不是调用时的this

    箭头函数的this永远指向其父作用域,任何方法都改变不了,包括call,apply,bind。

    (2). 箭头函数不能作为构造函数,不能使用new

    (3). 箭头函数没有arguments,caller,callee

    注意

    (1). 箭头函数通过call和apply调用,不会改变this指向,只会传入参数

    (2). 箭头函数没有原型属性

    (3). 箭头函数不能作为Generator函数,不能使用yield关键字

    (4). 箭头函数返回对象时,要加一个小括号

    (5). 箭头函数在ES6 class中声明的方法为实例方法,不是原型方法

    (6). 多重箭头函数就是一个高阶函数,相当于内嵌函数

 

 

posted @ 2021-12-24 14:29  王十二666  阅读(194)  评论(0)    收藏  举报