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). 箭头函数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). 多重箭头函数就是一个高阶函数,相当于内嵌函数



浙公网安备 33010602011771号