Javascript 函数和默认参数在 IE 和 Chrome 中不起作用

默认参数是 JavaScript ES6 中增加的一个新特性,它使得函数可以定义默认值来简化代码并减少错误。但是,在某些情况下,我们可能会发现默认参数在某些浏览器中不起作用,这篇文章将详细讨论这个问题,并提供解决方案。

现象

在 Chrome 和 IE11 中,如下代码将抛出一个异常:

-------- ------ ---- -
    -------------- ---
-
------ ----------- -- - ------- --- -- --- ------ - -- -----

该行为与 ES6 规范不同,并且可能导致一些兼容性问题。

原因

在 ES6 中,默认参数被设计为只应用于未定义或显式赋值为 undefined 的参数。而在旧版浏览器中,参数的默认值在任何情况下都会被忽略,即使它们被明确地传递了 undefined 值。

这是因为在遵循 ECMAScript 5(ES5)标准的浏览器中,函数调用时忽略的参数使用隐式的 undefined 值,而不是未定义的值。由于在传递 undefined 值时默认值不会应用,因此在这些浏览器中会抛出一个异常。

解决方案

为了解决这个问题,我们可以使用以下两种方法之一:

方法 1:手动检查未定义参数

我们可以在函数内部手动检查每个参数是否已定义,并根据需要分配默认值。例如:

-------- ------ -- -
    - - ------ - --- ----------- - - - --
    - - ------ - --- ----------- - - - --
    -------------- ---
-
------ ----------- -- --------- -- -

方法 2:使用旧的方式定义默认参数

我们也可以使用旧的方式来定义默认参数,即使用逻辑或操作符(||)来检查未定义的参数并分配默认值。例如:

-------- ------ -- -
    - - - -- --
    - - - -- --
    -------------- ---
-
------ ----------- -- --------- -- -

结论

虽然默认参数是一个便利的特性,但它并不完全支持所有浏览器。在编写代码时,请记住这一点,并采取必要的措施来确保代码在所有浏览器中都能正常工作。

来源:JavaScript中文网 ,转载请注明来源 本文地址:https://www.javascriptcn.com/post/28543