*const声明一个只读的常量。一旦声明,常量的值就不能改变。通常用const定义函数
*let用来定义块级作用域变量。它的用法类似于var,但是所声明的变量,只在let命令所在的代码块内有效。
需要注意:
1) 不管是let还是const,都没有了变量声明的提升;
console.log(m); //报错,没有变量声明的提升;
let m = 100;
2) 不管是let还是const,babel一律翻译为var。
对象的结构往往用在函数的形参列表中,调用函数的时候,传的对象(实参)就能够自动解构。
function People({name,age,sex,yuwen,shuxue,yingyu}){
this.name = name;
this.age = age;
this.sex = sex;
this.yuwen = yuwen;
this.shuxue = shuxue;
this.yingyu = yingyu;
}
var xiaoming = new People({
"name" : "小明",
"age" : 12,
"sex" : "男",
"yuwen" : 34,
"shuxue" : 44,
"yingyu" : 66
});
console.log(xiaoming);
我们可以在c变量之前加上…运算符,表示c现在接受所有剩余的参数。
需要注意的事情是:…只能出现在最后一项。
var [a,b,...c] = [1,2,3,4,5,6,7];
console.log(a);
console.log(b);
console.log(c); //[3,4,5,6,7]
在数组前面加上…运算符,表示强制解构。这个数组将变为零散量。
…运算符也可以作用于对象,通常用于一个情况:创建obj1的副本,仅仅改变obj1的某一(些)个属性。
var obj1 = {
"a" : 1,
"b" : 2,
"c" : 3
};
var obj2 = {
...obj1 ,
"b" : 8
};
console.log(obj2);
强制解构还可以用于类数组对象,可以将类数组对象变为真的数组:
const fun = function(){
//下面的语句是一个奇淫技巧,是最快的将类数组对象变为数组的方法
var arr = [...arguments];
console.log(arr); //[ 1, 2, 3, 4, 5, 6, 7, 8 ]
console.log(Array.isArray(arr)); //true
}
fun(1,2,3,4,5,6,7,8);