更新
JavaScript 现在支持空合并运算符 (??)。)。当左侧操作数为 or 时,它返回右侧操作数,否则返回左侧操作数。null
undefined
旧答案
请在使用前检查兼容性。
与 C# 空合并运算符 () 等效的 JavaScript 正在使用逻辑 OR ():??
||
var whatIWant = someString || "Cookies!";
在某些情况下(在下面澄清),行为与C#的行为不匹配,但这是在JavaScript中分配默认值/替代值的一般,简洁的方式。
澄清
无论第一个操作数的类型如何,如果将其转换为布尔值,则赋值将使用第二个操作数。请注意以下所有情况:false
alert(Boolean(null)); // false
alert(Boolean(undefined)); // false
alert(Boolean(0)); // false
alert(Boolean("")); // false
alert(Boolean("false")); // true -- gotcha! :)
这意味着:
var whatIWant = null || new ShinyObject(); // is a new shiny object
var whatIWant = undefined || "well defined"; // is "well defined"
var whatIWant = 0 || 42; // is 42
var whatIWant = "" || "a million bucks"; // is "a million bucks"
var whatIWant = "false" || "no way"; // is "false"