16

我有一个接受可选参数的 javascript 函数。这在 中可以正常工作Firefox,但在Google Chrome其中显示:-

Uncaught SyntaxError: Unexpected token =

我的代码,

function errorNotification(text = "Something went wrong!") {
  $.pnotify({
      title: 'Error',
      text: text,
      type: 'error'
  });
}

我见过很多类似的问题,但我无法意识到我的问题。

4

4 回答 4

32

您正在使用目前仅 Firefox 支持的默认参数功能。

function errorNotification(text) {
    text = text || "Something went wrong!";
    $.pnotify({
        title: 'Error',
        text: text,
        type: 'error'
    });
}
于 2013-10-31T05:48:55.950 回答
6

Javascript 不允许您传递这样的默认参数。您需要在内部将默认值分配给函数。

function errorNotification(text) {
  text || (text = "Something went wrong!");
  $.pnotify({
      title: 'Error',
      text: text,
      type: 'error'
  });
}
于 2013-10-31T05:49:46.983 回答
1

注意:如果您有一个要默认为的布尔值,则其他答案将不起作用true。那是因为anything||true将永远返回true。相反,您应该执行以下操作:

function foo(bar){
  if(bar === undefined)
    bar = true;
  //rest of your function
}
于 2015-05-08T17:34:49.630 回答
0

function [a-zA-Z0-9_]*?\s{0,}\([^=$)]*?(=)[^)$]*?\)找到带有默认参数的 js 函数然后更正它们会很有帮助。

于 2015-03-12T08:09:56.170 回答