变量thisconnection和HOW的价值是多少?

时间:2014-07-16 10:28:23

标签: javascript

var connections = {key: 1234}
var thisconnection = connections["key"] || {status:"new"};` 

在上面的代码中,变量thisconnection受逻辑运算符'||'

的约束

当我在控制台中输入以下代码时,thisconnection在任何情况下都会获取connections["key"]的值。

5 个答案:

答案 0 :(得分:2)

为什么不试试?

var connections = {key: 1234};
var thisconnection = connections["key"] || {status:"new"};
console.log(thisconnection); // returns 1234

说明:

如果connections.key返回0,NaN,false,undefined,"" (空字符串),或任何计算为false的值,它将继续评估下一个||表达式。

但是,如果表达式求值为truthy值,则整个语句将以评估结束。这称为short-circuiting

  

当逻辑表达式从左到右进行评估时,它们会被测试可能的短路"评估使用以下规则:

     
      
  • false&& (任何)短路评估为假。
  •   
  • true || (任何)短路评估为真。
  •   

由于1234是一个真值,评估将停止并分配值1234.

答案 1 :(得分:1)

如果connections["key"]为零,那么{status:"new"}将是变量的值

答案 2 :(得分:1)

在以下声明中

var thisconnection = connections["key"] || {status:"new"};

您说connection["key"]是否存在将connection["key"]分配给thisconnection,其他明智地将{status:new}分配给thisconnection

与以下代码相同

if(connections["key"]){
    thisconnection = connection["key"]
}
else{
    thisconnection = {status:new}
}

答案 3 :(得分:1)

首先,它会检查connections["key"]

如果它不为null,则为thisconnection的值,其值为connections["key"]。否则thisconnection将包含{status:"new"}的值。

答案 4 :(得分:1)

在JavaScript中,||&&运算符在变量赋值中使用时具有特定的行为。如果您有这样的事情:

var theResult = a || b || c || d;

然后,变量theResult不会像我们在其他语言中所期望的那样成为布尔值。

如果a是真实的,那么theResult = a。否则,如果b是真实的,那么theResult = b。依此类推......如果所有变量都是假的,那么theResult = d因为d是条件中的最后一个语句。

规则如下:

theResult的值将是a || b || c || d中打破链的变量的值

因此,由于我们只有OR条件,因此解析为true的第一个值将破坏链。我的意思是,如果a === true,则不需要评估其余条件,因为true || false || whatEver || weDontCare始终为true。如果变量都没有打破链,那么最后一个变量将分配给theResult