web-dev-qa-db-ja.com

if / elseステートメントJavascriptの省略形

これを書くより短い方法があるかどうか疑問に思っています:

var x = 1;
if(y != undefined) x = y;

最初に試してみたx = y || 1、しかしそれはうまくいかなかった。これについて正しい方法は何ですか?

40
var x = y !== undefined ? y : 1;

var x = y || 1;は、yが偽である場合(たとえば、false10)に""を割り当てることに注意してください。それがあなたのために「機能しなかった」理由です。また、yがグローバル変数である場合、本当に定義されていないと、window.yとしてアクセスしない限りエラーが発生する可能性があります。


Vol7ronがコメントで示唆しているように、typeofを使用して、グローバル変数をwindow.<name>として参照する必要を回避することもできます。

var x = typeof y != "undefined" ? y : 1;
86
Amber

まもなくそれを書く別の方法

bePlanVar = !!((bePlanVar == false));

// is equivalent to

bePlanVar = (bePlanVar == false) ? true : false;

// and 

if (bePlanVar == false) {
    bePlanVar = true;
} else {
    bePlanVar = false;
}
18
Hu3nn1
y = (y != undefined) ? y : x;

括弧は必要ありません。このように読む方が簡単だと思うので、括弧を追加するだけです。

3
haltabush

他の方法は、短絡を使用することです:

x = (typeof y !== 'undefined') && y || 1

私自身は、3項の方が読みやすいと思いますが。

2

動作する方法を次に示しますが、実際にはどの言語でもベストプラクティスではない場合があります。

var x,y;
x='something';
y=1;
undefined === y || (x = y);

代わりに

undefined !== y && (x = y);
0
Nemesarial