首页 > JavaScript > Javascript中是否有空合并运算符?

Javascript中是否有空合并运算符?

上一篇 下一篇

Javascript中是否有空合并运算符?

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

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

我能为Javascript找出的最佳近似值是使用条件运算符:

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

恕我直言,这有点令人讨厌。我能做得更好吗?

分割线

网友回答:

更新

JavaScript 现在支持空合并运算符 (??)。当左侧操作数为 or 时,它返回其右侧操作数,否则返回其左侧操作数。nullundefined

旧答案

请在使用前检查兼容性。


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"

分割线

网友回答:

function coalesce() {
    var len = arguments.length;
    for (var i=0; i<len; i++) {
        if (arguments[i] !== null && arguments[i] !== undefined) {
            return arguments[i];
        }
    }
    return null;
}

var xyz = {};
xyz.val = coalesce(null, undefined, xyz.val, 5);

// xyz.val now contains 5

此解决方案的工作方式类似于 SQL 合并函数,它接受任意数量的参数,如果它们都没有值,则返回 null。它的行为类似于 C#??运算符,即 “”、false 和 0 被视为非 NULL,因此计为实际值。如果您来自 .net 背景,这将是最自然的感觉解决方案。

分割线

网友回答:

是的,它即将到来。在此处查看提案,在此处查看实施状态。

它看起来像这样:

x ?? y

const response = {
  settings: {
    nullValue: null,
    height: 400,
    animationDuration: 0,
    headerText: '',
    showSplashScreen: false
  }
};

const undefinedValue = response.settings?.undefinedValue ?? 'some other default'; // result: 'some other default'
const nullValue = response.settings?.nullValue ?? 'some other default'; // result: 'some other default'
const headerText = response.settings?.headerText ?? 'Hello, world!'; // result: ''
const animationDuration = response.settings?.animationDuration ?? 300; // result: 0
const showSplashScreen = response.settings?.showSplashScreen ?? true; // result: false

模板简介:该模板名称为【Javascript中是否有空合并运算符?】,大小是暂无信息,文档格式为.编程语言,推荐使用Sublime/Dreamweaver/HBuilder打开,作品中的图片,文字等数据均可修改,图片请在作品中选中图片替换即可,文字修改直接点击文字修改即可,您也可以新增或修改作品中的内容,该模板来自用户分享,如有侵权行为请联系网站客服处理。欢迎来懒人模板【JavaScript】栏目查找您需要的精美模板。

相关搜索
  • 下载密码 lanrenmb
  • 下载次数 220次
  • 使用软件 Sublime/Dreamweaver/HBuilder
  • 文件格式 编程语言
  • 文件大小 暂无信息
  • 上传时间 04-09
  • 作者 网友投稿
  • 肖像权 人物画像及字体仅供参考
栏目分类 更多 >
热门推荐 更多 >
微信素材 微信模板 html5 单页式简历模板 响应式 企业网站 微信公众平台 微信文章 自适应 微信图片
您可能会喜欢的其他模板