当前位置: 首页 > 面试题库 >

JavaScript中是否有“空合并”运算符?

童华池
2023-03-14
问题内容

Javascript中是否存在空合并运算符?

例如,在C#中,我可以这样做:

String someString = null;
var whatIWant = someString ?? "Cookies!";

我可以为Javascript找到的最佳近似是使用条件运算符:

var someString = null;
var whatIWant = someString ? someString : 'Cookies!';

这有点怪异恕我直言。我可以做得更好吗?


问题答案:

更新资料

JavaScript现在支持无效的合并运算符(??)。当其左侧操作数为null或时undefined,它返回其右侧操作数,否则返回其左侧操作数。

使用前请检查兼容性。

与C#null合并运算符(??)等效的JavaScript 使用逻辑OR(||):

var whatIWant = someString || "Cookies!";

在某些情况下(以下已说明),该行为与C#的行为不匹配,但这是在JavaScript中分配默认/替代值的通用,简洁的方法。

Clarification

无论第一个操作数的类型如何,如果将其强制转换为Boolean都会导致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"


 类似资料:
  • 问题内容: 是否可以在Java中执行类似于以下代码的操作 问题答案: 可悲的是没有。您能做的最接近的是: 当然,如果您有需要的话,可以将其包装在库方法中(不太可能减少长度),但是在语法级别上没有更简洁的方法了。

  • 本文向大家介绍PHP 空合并运算符(??),包括了PHP 空合并运算符(??)的使用技巧和注意事项,需要的朋友参考一下 示例 空合并是PHP 7中引入的新运算符。如果未设置,则该运算符返回其第一个操作数NULL。否则,它将返回其第二个操作数。 下面的例子: 等同于两者: 和: 该运算符也可以被链接(具有右关联语义): 这等效于: 注意: 在字符串连接上使用合并运算符时,请不要忘记使用括号() 这将

  • A recent addition This is a recent addition to the language. Old browsers may need polyfills. 在本文中,我们将值既不是 null 也不是 undefined 的表达式称为“已定义的(defined)”。 空值合并运算符(nullish coalescing operator)的写法为两个问号 ??。 a

  • 本文向大家介绍Kotlin 空合并/Elvis运算符,包括了Kotlin 空合并/Elvis运算符的使用技巧和注意事项,需要的朋友参考一下 示例 有时希望以if-else方式评估可为空的表达式。Elvis运算符?:可以在Kotlin中用于这种情况。 例如: 如果 data?.first ()或数据本身产生 null 值,则上面的表达式返回“ Nothing here” ,否则返回 data?. f

  • 问题内容: PHP中是否存在像C#一样的三元运算符? 在C#中更干净,更短,但是在PHP中,您必须执行以下操作: 问题答案: PHP 7添加了空合并运算符: 您还可以看一下编写PHP三元运算符?的简短方法:(仅PHP> = 5.3) 而且您与C#的比较是不公平的。“在PHP中,您必须做类似的事情”-在C#中,如果您尝试访问不存在的数组/字典项,那么还将出现运行时错误。

  • 有人能解释一下PHP中三元运算符速记()和空合并运算符()之间的区别吗? 他们什么时候表现不同,什么时候表现相同(如果发生的话)? VS。