javascript - 像这样定义 JS 变量有什么意义 : var appName = appName || {};

标签 javascript

谁能告诉我在定义对象之前使用三元运算符检查对象是否已经存在背后的原因吗?

var message = message || "hello",
    messageOverwritten = "Variable wasn't overwritten",
    messageOverwritten = messageOverwritten || "Variable wasn overwritten";

console.log( message );
console.log( messageOverwritten );​

/* 
 * Output
 *
 * -> hello
 * -> Variable wasn't overwritten
 */

最佳答案

这里发生的只是一个“或”语句。例如,如果 messagenullundefined,则测试时它将计算为 false,并且 or 语句将评估右侧。然后,右侧将是设置为 message 的值。

这样做的原因是因为有些人认为它比替代方案更简洁:

if (!message)
    message = "hello";

关于javascript - 像这样定义 JS 变量有什么意义 : var appName = appName || {};,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13422897/

相关文章:

javascript - Tradingview 日历 Javascript

javascript - 滚动到 div,防止第二次点击

javascript - 如何强制在运行时加载媒体,而不是现在播放?

javascript - 让页面聚焦于新添加的 Div

javascript - 未捕获的类型错误 : Cannot read property 'top' of undefined error

javascript - CanvasJS - 根据用户输入渲染时间线图表

javascript - LinkedIn 用他们的 JS SDK 做了什么魔术?存在脚本主体和 src,加上奇怪格式的主体

javascript - onEnded 事件未在 Dojo 对话框中触发

javascript - 在 JavaScript 中打开本地文件

javascript - 在 JavaScript 中,从数组中删除 "bad"值的最有效方法是什么?