Answers:
您无法执行此操作,但是可以执行以下操作:
function saveItem(andClose) {
   if(andClose === undefined) {
      andClose = false;
   }
}通常将其简化为:
function setName(name) {
  name = name || 'Bob';
}更新资料
上面的内容适用于ECMAScript <=5。ES6提出了Default参数。因此,上述内容可以改为:
function setName(name = 'Bob') {}name = name || 'Bob';不应使用,因为如果将name设置为falsey值,则将使用默认值代替name
                    name = name || 'Bob'使用  name = (name === undefined) ? '' : name;
                    这不是有效的ECMAScript语法,但是对于Mozilla在其语言实现中添加的功能超集而言,这是有效的语法。
默认参数分配语法可能会出现在ECMAScript 6中。
foo = foo || "the default"。或者你可以检查.length的的arguments对象。或者,您可以简单地为测试每个参数undefined。每种情况都有不同的使用场合。
                    Javascript不允许使用“默认”说明符。
做您想要做的事的一种快速方法是更改:
function saveItem(andClose = false) {
}到以下内容:
function saveItem(andClose) {
    // this line will check if the argument is undefined, null, or false
    // if so set it to false, otherwise set it to it's original value
    var andClose = andClose || false;
    // now you can safely use andClose
    if (andClose) {
        // do something
    }
}andClose为false,它是0 ...不太符合我的期望...
                    var andClose = andClose === undefined? false: andClose;这将使您可以传递0给函数而不用代替false。
                    您提供的代码无法在Chrome <版本49中运行:https : //kangax.github.io/compat-table/es6/#test-default_function_parameters
您使用了有效的ECMAScript 2015语法:
我认为,使用ES2015功能的最佳方法是将资产与Browserify或WebPack捆绑在一起,并使用Babel将ES2015转编译为ES5。这样,您不必担心该ES2015浏览器兼容性表。第一次开始很痛苦,但是值得。
就您而言,您还有另一种选择可以确保您的变量是布尔值:
function saveItem(andClose) {
  var andClose = true == andClose;
  // ...
}默认值为undefined,true == undefined= = false,所以默认值为false:)
andClose已在此范围内分配了该变量