Javascript 对于数组(array==0)为true,对于非空数组(array==0)为false,为什么?
关于代码打印“你好”Javascript 对于数组(array==0)为true,对于非空数组(array==0)为false,为什么?,javascript,Javascript,关于代码打印“你好” let x = []; if(x==0) console.log('Hello') 上述代码不打印“Hello” 为什么?虽然我认为这应该作为的副本关闭,但在做出任何虚假陈述之前: =执行类型转换。这是根据以下条件进行的类型转换: 参考资料:,包含答案的许多相关问题。见和[]==0和[]==false是相同的,因为false被转换为0@DenIsahac:这怎么是重复的?[]是错误的,0是错误的。Falsy==Falsy==true。非常简单的伴侣。@Mardo
let x = [];
if(x==0)
console.log('Hello')
上述代码不打印“Hello”
为什么?虽然我认为这应该作为的副本关闭,但在做出任何虚假陈述之前:
=
执行类型转换。这是根据以下条件进行的类型转换:
参考资料:,包含答案的许多相关问题。见和<代码>[]==0和
[]==false
是相同的,因为false
被转换为0
@DenIsahac:这怎么是重复的?[]是错误的,0是错误的。Falsy==Falsy==true。非常简单的伴侣。@Mardoxx:除了[]
不是假的。没那么简单。请看我在第一条评论中发布的链接。@Mardoxx当比较不同类型的对象时,其中一个会转换为另一个类型。这不仅仅是比较他们的真实性。
let x = [ 1 ];
if(x==0)
console.log('Hello');
[] == 0 // step 9 ToPrimitve([]) == 0
"" == 0 // step 5 ToNumber("") == 0
0 == 0 // step 1.c.iii
[1] == 0 // step 9 ToPrimitve([1]) == 0
"1" == 0 // step 5 ToNumber("1") == 0
1 == 0 // step 1.c.iii