otherwise efi 字符串 num ring text 直接 console tab
- // 题目1:如下代码输出什么?
- if ("hello") {
- console.log("hello")
- } //true
- // 题目2:如下代码输出什么?
- if ("") {
- console.log('empty')
- }//false
- // 题目3:如下代码输出什么?
- if (" ") {
- console.log('blank')
- }//true
- // 题目4:如下代码输出什么?
- if ([0]) {
- console.log('array')
- }//true
- if('0.00'){
- console.log('0.00')
- }//true
- if(+0.00){
- console.log('haha')
- }//false +转换为数字
- if([]){
- console.log('haha')
- }//turn
括号里的表达式,会强制转换为布尔类型。 不要写上面误导的写法,if(a === 0){ }
类型 | 结果 |
---|---|
Undefined | false |
Null | false |
Boolean | 直接判断 |
Number | +0, ?0, 或者 NaN 为 false, 其他为 true |
String | 空字符串为 false, 其他都为 true |
Object | true |
- "" == 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 == 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 | true |
Number | String | x == toNumber(y) |
Boolean | (any) | toNumber(x) == y |
Object | String or Number | toPrimitive(x) == y |
otherwise | otherwise | false |
type | Result |
---|---|
Undefined | NaN |
Null | 0 |
Boolean | ture -> 1, false -> 0 |
String | "abc" -> NaN, "123" -> 123 |
对于 Object 类型,先尝试调用 .valueOf 方法获取结果。 如果没定义,再尝试调用 .toString 方法获取结果
if(xx) a==b 运算符常见误区
来源: http://www.bubuko.com/infodetail-2453704.html