默认参数是 JavaScript ES6 中增加的一个新特性,它使得函数可以定义默认值来简化代码并减少错误。但是,在某些情况下,我们可能会发现默认参数在某些浏览器中不起作用,这篇文章将详细讨论这个问题,并提供解决方案。
现象
在 Chrome 和 IE11 中,如下代码将抛出一个异常:
-------- ------ ---- - -------------- --- - ------ ----------- -- - ------- --- -- --- ------ - -- -----
该行为与 ES6 规范不同,并且可能导致一些兼容性问题。
原因
在 ES6 中,默认参数被设计为只应用于未定义或显式赋值为 undefined
的参数。而在旧版浏览器中,参数的默认值在任何情况下都会被忽略,即使它们被明确地传递了 undefined
值。
这是因为在遵循 ECMAScript 5(ES5)标准的浏览器中,函数调用时忽略的参数使用隐式的 undefined
值,而不是未定义的值。由于在传递 undefined
值时默认值不会应用,因此在这些浏览器中会抛出一个异常。
解决方案
为了解决这个问题,我们可以使用以下两种方法之一:
方法 1:手动检查未定义参数
我们可以在函数内部手动检查每个参数是否已定义,并根据需要分配默认值。例如:
-------- ------ -- - - - ------ - --- ----------- - - - -- - - ------ - --- ----------- - - - -- -------------- --- - ------ ----------- -- --------- -- -
方法 2:使用旧的方式定义默认参数
我们也可以使用旧的方式来定义默认参数,即使用逻辑或操作符(||
)来检查未定义的参数并分配默认值。例如:
-------- ------ -- - - - - -- -- - - - -- -- -------------- --- - ------ ----------- -- --------- -- -
结论
虽然默认参数是一个便利的特性,但它并不完全支持所有浏览器。在编写代码时,请记住这一点,并采取必要的措施来确保代码在所有浏览器中都能正常工作。
来源:JavaScript中文网 ,转载请注明来源 本文地址:https://www.javascriptcn.com/post/28543