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月第三版