一道小小笔试题,联想可以被强制转换成false的值
此题目来自鹅厂的笔试题,将其核心问题取出:
if (new Boolean(false)) {
console.log('true');
} else {
console.log('false');
}
或许,你会回答打印出false,当然我一开始也是这么想的。很可惜,答案是true,因为,new Boolean(false)并不是false,而是一个对象,所以可以通过if。当然回答错误,这是因为对可以强制转化成false的知识点不足。下面来说说,哪些东西可以强制转化成false,(可用!!来获取当前值的bool值):
false // 肯定是的
!!"" // false 注:!!" "会得到true
!!null // false
!!undefined // false
!!NaN // false
!!0 // false
// 注:!!{}, !!\[\] 这些都会得到true,他们都能通过if判断。
不能通过if判断的值就只有这6个了,以后遇到类似的问题,就不能再出问题啦。