作者:頃刻想詤嗳伱kYU-2001 | 来源:互联网 | 2023-02-09 10:11
从我第一次遇到Javascript以来的几年里,我总是使用函数参数的默认值,例如:
function addToCartCallback3(responseData, toCartBtn = null) {
// ...
}
但是我注意到现在我的PhpStorm警告我这是错误的,并且在
toCartBtn
逗号,
或结束括号之后)
是预期的.
上面的代码在Chrome和Firefox中运行良好,但会杀死IE11中的所有Javascript.(在IE11中,控制台告诉我和PhpStorm一样)
为什么这个代码错了,或者我应该使用什么?
我知道(typeof toCartBtn == 'undefined')
应该这样做,但我真的很好奇为什么另一种方法突然被认为是语法错误.
1> Shilly..:
如上所述,这仅适用于ES6浏览器,因为ES6将包含此默认语法.因此在IE11上你必须将默认值放在正文中:
function addToCartCallback3(responseData, toCartBtn) {
toCartBtn = toCartBtn || 'defaultHere';
}
请注意,如果您的默认值应为null,则可以不使用默认值,因为在大多数情况下,未定义的参数的行为方式与值为null的参数的行为方式相同.
到处都使用它,但不是太安全。您提到NULL是一个问题,但是传递的任何false值都会导致问题-null,NaN,0(零),“”(空字符串),false本身-除了未定义的值,这就是您想要的。稍长一些但更安全的更好:var =(var === undefined?'default':var);`
2> rasmeister..:
IE11不支持默认参数.这是浏览器无法识别的Javascript语言中的ES6扩展.
您可以通过查看这个有用的资源来看到这一点.如果查看"默认函数参数",您将看到该版本的IE不支持它.