在 ES-2015 标准中,可以设置默认函数参数,如下所示:
function name(name = 'noname') {
console.log(name);
}
name()
然而,同样的效果可以通过 hack 来实现:
function name(name) {
var name = name || 'noname'
console.log(name);
}
name()
在这种情况下,Babel 翻译这样一个函数:
function name() {
var name = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : 'noname';
console.log(name);
}
name();
哪个选项更好:如 Babel 所建议或使用 boolean ||
?
当然,更准确地说是 babel。因为例如:
如果您想将一个空字符串传递给您的函数,那么它的行为会有点出乎意料。
逻辑或遵循逻辑定律。一般来说,这种行为是不合适的。Babel 在不知道您的业务逻辑的情况下进行转换。
例如,空字符串是有效值,还是应该用默认值替换?0呢?
最好不依赖而写,
babel
因为babel
对你的逻辑一无所知babel
只是一个包装器,将来(理想情况下)不需要,当ES-2015标准成为事实上的标准时,对它的需求babel
就会消失