let
let类似于var,都用于对变量的定义。下面是let于var的不同:
1、let只作用于自己的块级作用域内容。
{
var a = 1;
let b = 2;
}
console.log(a); //1
console.log(b); //报错 b is not defined
这表明,let声明的变量只在它所在的代码块有效。
2、let不允许重复声明
let不允许在相同作用域内,出现同一个变量。
3、let不存在变量提升
console.log(a); //undefined var a = 1; console.log(b); //报错 b is not defined let b = 2;
let如果先使用再定义,就会报错,这种叫做“暂时性死区”。所以,let只能先定义后使用,这也是ES6所提倡的用法。
const
ES6扩展了只读常量,const就是声明只读常量的命令。一旦声明,常量的值就不能改变。
const a = 1; console.log(a); //1 a = 2; //报错Assignment to constant variable.
const 声明常量后必须赋值,并且和let一样,只在声明所在的块级作用域内有效。
const a; //报错 Missing initializer in const declaration
if (true) {
const b = 5;
}
console.log(b); //报错 b is not defined
=>箭头函数
ES6扩展了箭头函数“=>”
var f = v => v;
//等同于
var f = function(v) {
return v;
};
如果箭头函数不需要参数或需要多个参数,就使用一个圆括号代表参数部分。
var f = () => 5;
// 等同于
var f = function () { return 5 };
var sum = (num1, num2) => num1 + num2;
// 等同于
var sum = function(num1, num2) {
return num1 + num2;
};
如果箭头函数的代码块部分多于一条语句,就要使用大括号将它们括起来,并且使用return语句返回。
var f = (n,m) => {
var z = n+m;
return z;
};
//等同于
var f = function(n,m){
var z = n+m;
return z;
}
…扩展运算符
扩展运算符(…)是将一个数组转为用逗号分隔的参数序列。
bar = function(a, b, ...args) {
console.log(a); //a
console.log(b); //b
console.log(args); //['c','d','e']
}
bar('a', 'b', 'c', 'd', 'e');
…运算符还可以快速将一个字符串转为数组格式
let str = 'hello-es6'; let strArr = [...str]; console.log(strArr); //["h", "e", "l", "l", "o", "-", "e", "s", "6"]
使用…运算符快速合并数组
let arr1 = ['a', 'b', 'c']; let arr2 = ['d', 'e', 'f']; let arr3 = ['x', 'y', 'z']; let arr4 = [...arr1, ...arr2, ...arr3]; console.log(arr4); // ["a", "b", "c", "d", "e", "f", "x", "y", "z"]
前端ABC