1.let:(变量使用)
1.不可重复定义。(同一作用域,ps:无论let,const)
2.预编译不会声明提升
3.解决循环中,函数表达式问题(IIFE)
4.使用完立即清除
ps:var会覆盖全局变量,而let和const不会
var RegExp = "Hello!";
console.log(window.RegExp); // "Hello!"
// in a browser
let RegExp = "Hello!";
console.log(RegExp); // "Hello!"
console.log(window.RegExp === RegExp); // false
const ncz = "Hi!";
console.log(ncz); // "Hi!"
console.log("ncz" in window); // false
2.const:(不变的常量,和function使用)
1.必须初始化。
2.不能修改绑定,但可以修改属性值和添加属性。
3.不可重复定义。(同一作用域,ps:无论let,const)
4.预编译不会声明提升
5.使用完立即清除
3.不定参数和展开运算符,解构:(用法…a,长得很像,用法不一样)
1.不定参数:必须写在最后。
// Syntax error: Can't have a named parameter after rest parameters
err:function pick(object, ...keys, last) {
let result = Object.create(null);
for (let i = 0, len = keys.length; i < len; i++) {
result[keys[i]] = object[keys[i]];
}
return result;
}
right:function pick(object, last, ...keys) {
//someThing
}
2.不定参数:如果参数必须为一个不能使用。
const object = {
// Syntax error: Can't use rest param in setter
set name(...value) {
// do something
}
};
3.展开运算符。()
const values = [25, 50, 75, 100]
// equivalent to
// console.log(Math.max(25, 50, 75, 100));
console.log(Math.max(...values)); // 100
4.解构
const values = {name:"cx",age:18,height:170}
const {name} = values;
const { name:newName } = values;
console.log(name,newName); // cx,cx
4箭头函数:(=》和传统函数的不同)
写法:
var reflect = value => value;
//or 多参数:var reflect = (...value) => value;
//or 无参数:var reflect = () => {};
// 转化:
var reflect = function(value) {
return value;
};
加入字面量
var getTempItem = id => ({ id: id, name: "Temp" });
// effectively equivalent to:
var getTempItem = function(id) {
return {
id: id,
name: "Temp"
};
};
1.没有this,super,arguments,new.target绑定(由外围最近一层非箭头函数决定)。
传统函数:
var PageHandler = {
id: "123456",
init: function() {
document.addEventListener("click", (function(event) {
this.doSomething(event.type); // no error
}).bind(this), false);//必须通过bind(this)绑定事件对象
},
doSomething: function(type) {
console.log("Handling " + type + " for " + this.id);
}
};
箭头函数:
var PageHandler = {
id: "123456",
init: function() {
document.addEventListener("click",
event => this.doSomething(event.type), false);//无需绑定因为
},
doSomething: function(type) {
console.log("Handling " + type + " for " + this.id);
}
};
2.不能通过new关键字调用。
3.没有原型。
4.#不可以改变this的绑定。
5.不能重名。

1066

被折叠的 条评论
为什么被折叠?



