一道小小笔试题,联想可以被强制转换成false的值

2016年08月16日Web前端0

此题目来自鹅厂的笔试题,将其核心问题取出:

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个了,以后遇到类似的问题,就不能再出问题啦。

目录