回答:
これを行うことはできませんが、代わりに次のようなことを行うことができます。
function saveItem(andClose) {
if(andClose === undefined) {
andClose = false;
}
}
これはしばしば以下のように短縮されます:
function setName(name) {
name = name || 'Bob';
}
更新
上記はECMAScript <= 5に当てはまります。ES6はデフォルトパラメータを提案しています。だから上記は代わりに読むことができます:
function setName(name = 'Bob') {}
name = name || 'Bob';
名前が誤った値に設定されている場合、名前の代わりにデフォルトが使用されるため、使用しないでください
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
変数がすでにこのスコープで割り当てられているため、1つのマイナーな調整はvar宣言を削除することです