google 网站突然一条收录也没有,个人域名备案网站名称例子,网站建设嘉兴,培训类 网站后台1、es6之前的函数参数默认值写法
1.1、使用短路或||的写法
当y为空时#xff0c;y判断为false #xff0c;走||右边的#xff0c;所以y world;当y不为空时#xff0c;y判断为true#xff0c;不需要再运行||右边的#xff0c;所以 y y
function log(x, y) {y y || W…1、es6之前的函数参数默认值写法
1.1、使用短路或||的写法
当y为空时y判断为false 走||右边的所以y world;当y不为空时y判断为true不需要再运行||右边的所以 y y
function log(x, y) {y y || World;console.log(x, y);
}log(Hello) // Hello World
log(Hello, China) // Hello China
log(Hello, ) // Hello World这中写法有个问题就是第三种输出中的结果。当y值设置为“”时走短路与运算判断为false从而将默认值赋予了y。但是原本的意思是y的值就是“”从而希望输出的是 Hello 。
1.2 添加typeof 判断是否为undefined
function log(x, y) {if (typeof y undefined) {y World;}console.log(x, y);
}log(Hello) // Hello World
log(Hello, China) // Hello China
log(Hello, ) // Hello 这种写法可以避免1.1中y值为空串的情况。
2、es6写法
function log(x, y World) {console.log(x, y);
}log(Hello) // Hello World
log(Hello, China) // Hello China
log(Hello, ) // Hello上面是es6的写法简单方便。
下面是解构赋值和函数默认值结合
方法一是个解构变量设置默认值二默认值生效的条件是对象属性值严格等于undefined。 方法二是设置对象的值没有设置解构变量的默认值。 在没有参数和x y都有值的情况下两者的结果一样。其他情况下两者有区别。
// 写法一
function m1({x 0, y 0} {}) {return [x, y];
}// 写法二
function m2({x, y} { x: 0, y: 0 }) {return [x, y];
}// 函数没有参数的情况
m1() // [0, 0]
m2() // [0, 0]// x 和 y 都有值的情况
m1({x: 3, y: 8}) // [3, 8]
m2({x: 3, y: 8}) // [3, 8]// x 有值y 无值的情况
m1({x: 3}) // [3, 0]
m2({x: 3}) // [3, undefined]// x 和 y 都无值的情况
m1({}) // [0, 0];
m2({}) // [undefined, undefined]m1({z: 3}) // [0, 0]
m2({z: 3}) // [undefined, undefined]