误解JavaScript类型系统

Sca*_*lar 2 javascript type-conversion

var foo=[0];
if(foo) alert('first');
if(foo==true) alert('second');
Run Code Online (Sandbox Code Playgroud)

请告诉我,为什么第二个警报不起作用?在第一次警报foo转换中Boolean,所以

Boolean(foo);
//true
Run Code Online (Sandbox Code Playgroud)

如果"foo"为"true",为什么第二个警报不起作用?

Sha*_*fiz 5

这里,

if(foo)警告,因为foo不为null且条件的计算结果为true.

但是,这并不意味着foo本身等于true,因此第二个警报不显示.