我的firebug控制台中定义的函数如何接受默认参数?

时间:2014-06-13 03:36:05

标签: javascript

我认为这不应该在javascript中运行:

  > var f = function(x, y=1) {return [x,y]}
  > f
  function(x, y=1)

  > f()
  [undefined, 1]

  > f(1)
  [1, 1]

  > f(1,2)
  [1, 2]

可是:

  • 它适用于我的firebug控制台
  • 我在javascript
  • 中的方法签名中找不到任何默认参数的文档
  • 它打破了jslint
  • 它破坏了我的v8编译器

发生了什么事?

1 个答案:

答案 0 :(得分:2)

它似乎与此功能相关(目前特定于Firefox),默认参数:https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/default_parameters

  

如果没有传递值或未定义,则允许使用默认值初始化形式参数   警告:对于Gecko 15和更高版本。

兼容性,来自MDN:

Browser compatibility
Feature         |Chrome         |Firefox (Gecko)    |Internet Explorer  |Opera          |Safari (WebKit)
Basic support   |Not supported  |15 (15)            |Not supported      |Not supported  |Not supported

这可以解释为什么它只能在FireBug中使用。

默认参数在ECMAScript 6草案中,因此我们将来可能会看到它们。兼容性可以在这里找到:http://kangax.github.io/compat-table/es6/#default_function_params
(感谢@jonathanlonowski的链接!)