一、函数扩展
1、参数默认值
参数有默认值,后面不可以再加没有默认值的变量。如以下test函数中,不可以加写成
function test(x,y="word",z){
}
function test(x,y="word"){
console.log("默认值",x,y);
}
test("lala"); //lala word
test("lala","你好啊"); //lala 你好啊
2、作用域的问题
//作用域的问题
let x="test";
function test2(x,y=x){
console.log("作用域",x,y);
}
test2("kill"); //kill kill
test2() //undefined undefined
function test3(c,y=x){
console.log("作用域",c,y);
}
test3("kill"); //kill test
3、参数问题
...arg后不可再加参数
function test4(...arg){
for(let v of arg){
console.log("rest",v);
}
}
test4(1,2,3,4,"a"); //1,2,3,4,a
console.log("a",...[1,2,3]); //a 1 2 3
4、伪调用 主要用于提升性能
//伪调用
function trail(x){
console.log("tail",x);
}
function fx(x){
return trail(x)
}
fx(123);
二、对象扩展
1、简洁表示法
//简洁表示法
let o=1;let k=2;
let es5={
o:o,
K:k
};
let es6={
o,k
}
console.log(es5,es6);
let es5_method={
hello:function(){
console.log("11hello");
}
}
let es6_methods={
hello(){
console.log("22hello")
}
}
console.log(es5_method.hello(),es6_methods.hello());
2、属性表达式
//属性表达式
let a="b";
let es5_obj={
a:"c"
}
let es6_obg={
[a]:"c"
}
console.log(es5_obj,es6_obg);
3、新增API
//新增api
console.log("字符串",Object.is("abc","abc"),"abc"==="abc"); //true true
console.log("数组",Object.is([],[]),[]===[]); //false false
console.log("拷贝",Object.assign({a:"a"},{b:"b"})); //a:"a",b:"b"