var a = parseInt([0,0,1,0,0].join('')+1) a的值为

发布时间 2023-11-15 12:41:27作者: 龙陌

var a = parseInt([0,0,1,0,0].join('')+1) a的值为

A
2

B
101

C
1001

D
NaN

正确答案:C

官方解析:"00100"+1 = "001001" 再转换为整数为1001

var a = parseInt([0,0,1,0,0].join('')+1)
//join()方法将数组转为字符串,并用指定的分隔符进行分割

[0,0,1,0,0].join("") 后变成字符串'00100'
字符串'00100'+1 ,1是number,会将1转变为字符串后拼接
就变为 001001 parseInt后 变成 1001

JS的类型转换规则相当繁杂,主要是变化太多了。

在 JS 中类型转换只有三种情况,分别是:
转换为布尔值
转换为数字
转换为字符串

四则运算和==、条件运算都会隐式类型转换。

运算

但记住常见的就差不多了
加法运算 字符串 + 数字 将数字转为字符串 如111+'222'="111222"
非加法运算 字符串- x / 数字 将字符串转为数字 如'111'-11=100

==

首先会判断两者类型是否相同。相同的话就是比值大小了
类型不相同的话,那么就会进行类型转换
会先判断是否在对比 null 和 undefined,是的话就会返回 true
判断两者类型是否为 string 和 number,是的话就会将字符串转换为 number
判断其中一方是否为 boolean,是的话就会把 boolean 转为 number 再进行判断
判断其中一方是否为 object 且另一方为 string、number 或者 symbol,是的话就会把 object 转为原始类型再进行判断

var a=parseInt([0,0,1,0,0].join("")+1);
① ([0,0,1,0,0].join("") 结果为 "00100"

②"00100"+1 结果为 "001001"【因为字符串加数字结果就是字符串拼接的结果】

③parseInt("001001") 结果为 1001 【在ECMAScript3中,会将0开头的解析为8进制。在ECMAScript5中,不允许以0开头的八进制,所以后面都会将0舍弃】