Ric*_*ton 16 javascript types ternary-operator
我正在玩JSconsole并发现一些奇怪的东西.值为"0"false
"0" == false
=> true
Run Code Online (Sandbox Code Playgroud)
false在三元组中使用的值返回第二个值
false ? 71 : 16
=> 16
Run Code Online (Sandbox Code Playgroud)
但是,在三元组中使用的值"0"等于false返回第一个值.
"0" ? 8 : 10
=> 8
Run Code Online (Sandbox Code Playgroud)
但是,如果您将其0用作值,则返回第二个值
0 ? 4 : 5
=> 5
0 == "0"
=> true
Run Code Online (Sandbox Code Playgroud)
我担心这对我没有意义.
xda*_*azz 18
非空字符串在条件语句,条件表达式和条件结构中被视为真值.
但是,当您将字符串与数字进行比较时,将进行==一些转换.
比较数字和字符串时,字符串将转换为 数字值.JavaScript尝试将字符串数字文字转换为数字类型值.首先,从字符串数字文字中导出数学值.接下来,将此值四舍五入为最接近的Number类型值.
并且==没有平等的传递性质:
你不能说if a == b, b == c, then a == c.
一个例子是:
"0" == false // true
false == "\n" //true
Run Code Online (Sandbox Code Playgroud)
并猜测结果"0" == "\n"?是的,结果是false.
Zee*_*Zee 16
"0"是一个字符串长度的>0是true.尝试
0 ? 8 : 10
Run Code Online (Sandbox Code Playgroud)
并看到.它会回来10.
==做类型转换,因此当你这样做
"0" == false
Run Code Online (Sandbox Code Playgroud)
它返回true.当你这样做
0 == "0" //true
Run Code Online (Sandbox Code Playgroud)
当再次进行类型转换时,它也返回true.即使一个是a number而另一个是a,string它返回true.但是如果您使用===,则不会进行类型转换并0 === "0"返回false.
的一个很好的解释==和===给出了这里.
来自文档:
==如果操作数不是同一类型,则相等运算符()转换操作数,然后应用严格比较.如果操作数严格相等而没有类型转换,则identity运算符(
===)返回true.
我担心这是你应该使用的一个例子===- 普通旧的==执行类型转换.尝试
"0"===false
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
3293 次 |
| 最近记录: |