'&&'和'||' vs'?:"

Dun*_*ill 5 javascript syntax ternary-operator

为什么要使用这种语法?

var myVar = myArray.length && myArray || myObject;
Run Code Online (Sandbox Code Playgroud)

代替

var myVar = myArray.length ? myArray : myObject;
Run Code Online (Sandbox Code Playgroud)

编辑:我只是想到如果在&& ||语法的情况下,||评估的两侧都为false,正如您可能期望的那样myObject,undefined或者null,如果为false则返回.但它不是,对象值undefinednull返回.

true  ||  true      //true
true  ||  false     //true
false ||  true      //true
false ||  false     //false
Run Code Online (Sandbox Code Playgroud)

EDIT2:

!!(myArray.length ? myArray : myObject);
Run Code Online (Sandbox Code Playgroud)

但是,如果myObjectundefined或,则返回falsenull

小智 4

x && y || z与在x ? y : z呈现的案例中“有效”不同。

考虑何时y评估为假值(在评估y时不能是假值,因为它依赖于x因此它按预期“工作”)。

在这种情况下,使用?:是更好、更清晰的构造。我可以给出使用其他语法的唯一原因是“太聪明了”。