1、if判断
(1)从面试题说说if的数据类型,js如何转换判断
// 题目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([]){
console.log('hahah')
}//特殊对象 true
// 题目5:如下代码输出什么?
if('0.00'){
console.log('0.00')
}//字符串(除空字符串外)true
if(+0.00){
console.log('hahah')
}//false
*(2)判断原理:
对于if()里括号的表达式(如以下),会被强制转换为布尔类型
undefined --> false
null -->false
false -->false
+0,-0 ,NaN -->false 【其他number(数字)为true】
""或''(空字符串)-->false【其他string(字符串,包含" "空白字符串)为true】
2、==判断
(1)对于==的表达式判断,js是怎么处理的?
"" == 0 //题目1 ""空字符串===false===0 0==0 //true
" " == 0 //题目2 Number(' ')-->0===false 0==0 //true
"" == true //题目3 0===1 //false
"" == false //题目4 0===0 //true
" " == true //题目5 false===0 0==1 //false
!" " == true //题目6 " "空白字符串===true !0===false===0 0不等于true //false
!" " == false //题目7 false==false //true
*"hello" == true //题目8 字母字符串===Nan Nan不等于1 //fasle
*"hello" == false //题目9 字母字符串===Nan Nan不等于0 //fasle
"0" == true //题目10 "0"(数字字符串)===0不等于1 //false
"0" == false //题目11 "0"(数字字符串)===0===0 //true
*"00" == false //题目12 "00"(数字字符串)===00===0 //true
"0.00" == false //题目13 "0.00"(数字字符串)===0===0 //true
*undefined == null //题目14 undefined===Nan===null //true
*{} == true //题目15 {}===object(没有字符串)不等于true //fasle
*[] == true //题目16 [](空数组)===object(没有字符串)不等于true //fasle
var obj = {
a: 0,
valueOf: function(){return 1}
}
obj == "[object Object]" //题目17 //false
obj == 1 //题目18 //true
obj == true //题目19 //true
(2)判断原理
两图对照,就能判断表达式的数字类型:
1
2