3 回答
TA贡献1808条经验 获得超4个赞
if (arr)
if (arr == false)
false
arr.toString()
""
.
toString
Array.join()
TA贡献1906条经验 获得超3个赞
if (arr == false) console.log("It's false!");
console.log(0 == false) // trueconsole.log([] == 0) // trueconsole.log([] == "") // true
false
0
0
== 0
true
.
编辑:
1.如果类型(X)与类型(Y)不同,则转到步骤14。
19.如果类型(Y)是布尔型,则返回比较x=ToNumber(Y)的结果。
ToNumber(false)
0
[] == 0
21.如果Type(X)是Object,Type(Y)是字符串或数字,则返回比较ToPrimitive(X)=y的结果。
ToPrimitive([])
"" == 0
17.如果Type(X)是String,Type(Y)是Number,则返回比较ToNumber(X)=y的结果。
ToNumber("")
0
0 == 0
7.如果x是与y相同的数字值,则返回true。
true
.
ToNumber(ToPrimitive([])) == ToNumber(false)
TA贡献1842条经验 获得超12个赞
ToPrimitive([])
""
对象的默认值是通过调用对象的[DefaultValue]内部方法来检索的,并传递可选的提示PreferredType。
第8.12.8节[[DefaultValue]]
[[DefaultValue]]
toString()
valueOf()
toString()
valueOf()
valueOf()
[[DefaultValue]]
toString()
valueOf()
valueOf()
valueOf()
Array
. [].valueOf()
[]
Array
[[DefaultValue]]
toString()
.
此对象到数字转换的详细信息解释了为什么空数组转换为数字0,以及为什么具有单个元素的数组也可以转换为数字。数组继承了返回对象而不是原始值的默认值()方法,因此数组到数字的转换依赖于toString()方法。空数组转换为空字符串。空字符串转换为数字0。具有单个元素的数组将转换为与一个元素相同的字符串。如果数组包含单个数字,则将该数字转换为字符串,然后返回到数字。
Array.valueOf()
toString()
var a = [17], b = 17, c=1;console.log(a==b); // <= trueconsole.log(a==c); // <= false
添加回答
举报