3

paramsまたはプロパティでいっぱいのオブジェクトを関数に渡す場合は、未定義のparamsをチェックし、未定義のparamsにデフォルト値を与えると便利です。

jQueryエクステントのようなライブラリ関数を使用しない場合、この種のデフォルトの割り当てを行うためのコードの最短は何でしょうか?

これが私が考えることができる最短のものです:

var test;
var output = (typeof test != "undefined") ? test : "Default";

誰かが提案する前に:

var test;
var output = test || "Default";

false、0、または""では機能しません

4

5 に答える 5

4

これを試して:

var output = test != null ? test : "Default";

Ig:

null == undefined // true
null == null // true
null == 0 // false
null == "" //false
null == false // false
于 2012-12-14T17:22:07.573 に答える
1

わかりました。「未定義」が型の最長値である場合、オブジェクトの存在を確認する最短の方法は次のとおりです。

!(typeof console).charAt(8)

ここで、「コンソール」は調査対象のオブジェクトです。 .charAt(8)は、オブジェクトが"undefined"以外の場合、 falseに等しい空の文字列""を返します 。これは古いIEをサポートするための安全な方法です。ただし、最新のブラウザのサポートのみが必要な場合は、

if(!(typeof console)[8]) { doWork(); }

オブジェクトが定義されていることを確認します。

于 2013-10-12T17:01:16.240 に答える
1

https://github.com/jed/140bytes/wiki/Byte-saving-techniquesはあなたの友達です:

var output = test===[]._ ? "Default" : test;

短い:

var output=test===[]._?"Default":test;

演算子とトークンの間にスペースは必要ありません。

于 2014-07-05T08:40:19.137 に答える
1

ES2021では、これはNullish合体演算子を使用して可能になりました。

使用法:

const str = null ?? 'default string';
console.log(str);
// expected output: "default string"

const num = 0 ?? 42;
console.log(num);
// expected output: 0

const bool = false ?? true;
console.log(bool)
// expected output: false
于 2021-02-09T15:03:16.513 に答える
0

あなたはこれを試すことができます:

var output = if(test === undefined) ? test: "Default";

0、、を有効なパラメータとして渡さないことがわかっている場合はfalse""これを次のように簡略化できます。

var output = if(test) ? test : "Default";

ただし、これはJavaScriptの不可解な「真実の偽り」の部分に入ります。===タイプ比較を使用して同等性チェックを実行するようにします。

お役に立てれば。

于 2012-12-14T17:26:28.720 に答える