let x;
console.log("shubham" == true ); // gives false
"shubham" ? x=2 : x=3;
console.log(x); // gives 2, so "shubham" must be true?
//我希望得到价值3
答案 0 :(得分:2)
当你使用它时:
"shubham" == true
在比较之前,true转为1,所以实际比较是
"shubham" == 1
所以,它给出了错误;
这本书:执行转换时,等于和不等于运算符会跟随 这些基本规则:
如果操作数是布尔值,则将其转换为a 检查相等性之前的数值。值为false的转换 为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 Developers的专业JavaScript。3rd.Edition.Jan.2012
答案 1 :(得分:2)
是的,这是由于' if'背后的基础代码。 Javascript中的语句。它依赖于一种方法' ToBoolean'它将if语句的条件转换为布尔值。任何非空的字符串都将转换为true。因此,为什么你得到上述逻辑。