一、 if 的判断
// 题目1:如下代码输出什么?
if ("hello") {
console.log("hello")
}
// 题目2:如下代码输出什么?
if ("") {
console.log('empty')
}
// 题目3:如下代码输出什么?
if (" ") {
console.log('blank')
}
// 题目4:如下代码输出什么?
if ([0]) {
console.log('array')
}
// 题目5
if('0.00'){
console.log('0.00')
}
解密
- 对于括号里的表达式,会被强制转换为布尔类型
原理
类型 | 结果 |
---|---|
Undefined | false |
Null | false |
Boolean | 直接判断 |
Number | +0, −0, 或者 NaN 为 false, 其他为 true |
String | 空字符串为 false,其他都为 true |
Object | true |
答案
- string ==> true
- 空字符串 ==> false
- string ==> true
- obj ==> true
- string ==> true
所以只有2无法正常输出
二、 == 的判断
题目
"" == 0 //题目1
" " == 0 //题目2
"" == true //题目3
"" == false //题目4
" " == true //题目5
!" " == true //题目6
!" " == false //题目7
"hello" == true //题目8
"hello" == false //题目9
"0" == true //题目10
"0" == false //题目11
"00" == false //题目12
"0.00" == false //题目13
undefined == null //题目14
{} == true //题目15
[] == true //题目16
var obj = {
a: 0,
valueOf: function(){return 1}
}
obj == "[object Object]" //题目17
obj == 1 //题目18
obj == true //题目19
解密
x | y | 结果 |
---|---|---|
null | undefined | x == toNumber(y) |
Number | String | true |
Boolean | (any) | toNumber(x) == y |
Object | String or Number | toPrimitive(x) == y |
- toNumber
type | Result |
---|---|
Undefined | NaN |
Null | 0 |
Boolean | ture -> 1, false -> 0 |
String | “abc” -> NaN, “123” -> 123 |
- toPrimitive
对于 Object 类型,先尝试调用 .valueOf 方法获取结果。 如果没定义,再尝试调用 .toString方法获取结果
答案
- true 0==0
- true 0==0
- false 0==1
- true 0==0
- false 0==1
- false " " == true
- true
- false "hello"==NaN
- false
- false"0"==0
- true
- true
- true
- true
- false
- false
- false
- true
- true
三、总结
1.对于 if 的判断,string 记住空字符串是 false, 其余是 true
2.对于 == 的判断,将其转化为数字
参考:饥人谷
网友评论