let x;
console.log("shubham" == true );  // gives false
"shubham" ? x=2 : x=3;
console.log(x); // gives 2, so "shubham" must be true?


//我希望获得价值3

最佳答案

当您使用此:

"shubham" == true


在比较之前,true变为1,所以实际比较是

"shubham" == 1


因此,它给出了错误;

这本书:


  执行转换时,等于和不等于运算符
  这些基本规则:
  
  如果操作数是布尔值,请将其转换为
  在检查相等性之前的数字值。假转换的值
  为0,而值为true则转换为1。
  
  如果一个操作数是一个字符串,另一个是数字,请在检查是否相等之前尝试将字符串转换为数字。


当您使用此:

"shubham" ? x=2 : x=3;


像:

Boolean("shubham")?x=2:x=3


因此,它给你x = 2;

这本书:

variable = boolean_expression ? true_value : false_value;



  这基本上允许有条件地分配给变量
  对boolean_expression的求值。如果是真的话
  将true_value分配给变量;如果是假的,那么
  将false_value分配给变量。


这本书:


  适用于Web开发人员的专业JavaScript.2012年1月第三版

10-08 09:09