
在ES6之前,您不能直接为函数参数指定默认值,而只能使用解决方法.
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. 如果不是,则默认值为World. 此方法的缺点是,如果分配了参数y,但相应的布尔值是false函数参数 默认值,则分配将不起作用. 就像上面代码的最后一行一样,参数y等于空字符,并且结果更改为默认值.
为避免此问题,通常必须确定是否分配了参数y,如果没有分配,则它等于默认值.

if (typeof y === 'undefined') {
y = 'World';
}
ES6允许您为功能参数设置默认值,该默认值直接在参数定义之后编写.

function log(x, y = 'World') {
console.log(x, y);
}
log('Hello') // Hello World
log('Hello', 'China') // Hello China
log('Hello', '') // Hello
如您所见,ES6的编写比ES5简单得多,而且非常自然. 这是另一个例子.

function Point(x = 0, y = 0) {
this.x = x;
this.y = y;
}
const p = new Point();
p // { x: 0, y: 0 }
除了简洁之外,ES6在编写方面还具有两个优点: 首先函数参数 默认值,阅读代码的人员可以立即意识到可以省略哪些参数,而无需查看功能主体或文档. 其次,它有利于将来的代码优化,即使是将来的版本也会在外部接口中完全删除此参数,并且不会导致以前的代码运行.
本文来自电脑杂谈,转载请注明本文网址:
https://www.pc-fly.com/a/jisuanjixue/article-218684-1.html
也许美帝就是来溜一圈立马就滚出12海里
千玺好样的