繁体   English   中英

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

[英]Whats the point of defining a JS variable like so: var appName = appName || {};

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

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";

wsanville 关于该语法的作用以及人们使用它的原因是正确的,但我认为您可能会问更多它的用途。 我见过它主要用于为可选变量设置默认值。 以函数为例

function foo(value){
   value = value || 'hello';
   console.log(value);
}

然后你可以说foo()并且你会得到 'hello',或者foo('goodbye')并且得到 'goodbye'。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM