将Javascript中的对象引入数字或字符串规则
在Javascript编程,根据不同的语境中,JS自动转换对象转换成数字或字符串处理。这种自动转换规则如下:对象规则自动转换成字符串:
1。如果toString()的类对象的方法被重写,调用方法。如果toString()调用返回的结果是原始的(字符串,数字,布尔值,定义,null),原始值转换为字符串返回后。
2,如果对象的类不会覆盖ToString()方法的结果,说明()调用返回{对象},或重写toString()方法,但该方法返回的结果作为一个对象,然后调用js将值()方法的对象。如果值()返回原始结果(字符串,数字,布尔值,定义,null),则原始值被转换回它的结束。
3,如果这两点都不能满足,原始的不能通过调用对象的ToString()方法获得或价值()方法。然后JS将抛出TypeError错误。
对象规则自动转换成数字:
1。调用的值()方法的对象,如果得到的是原始值,然后原始值转换为数字,返回。
2,如果你不能从价值得到原始值()方法调用toString()方法的对象;如果toString()返回原始值,然后原始值被转换回数。
三.如果以上两点都不满意,然后JS会把列表的错误。
可以看出,对象自动转换为字符串和对象自动转换为数规则实际上是一致的,所不同的是toString()方法和价值()方法称为序列。
根据以上规则,可以很好地理解一些转换结果:
1。一个空数组,当它转换为数字,结果是0。这是因为数组的第一个电话(值)的方法,从价值()返回的数组对象本身,所以接下来的js将调用toString()方法的一个空数组;(字符串)后,返回的结果为空字符串空数组,它最终会将空字符串作为0号返回后。
2。对于只有一个数字成员的数组,相同的规则转换为数字,最终结果是数字。
三.对于具有多个数字成员的数组,最终结果是因为无法将字符串转换成数字。
什么时候可以转换成字符串什么时候可以转换成数字
在自动类型转换为对象时,js将根据对象的不同类型和运算符的不同选择将其转换为字符串或数字:
该对象出现在1 +运算符的两侧,并将对象转换为字符串。
2。所有对象(除了日期对象)都首选数字。
三.对于日期对象,优先级被转换为字符串。
值得注意的是,对于+操作符,除了操作符两边的对象或字符串的出现之外,操作在其他情况下被转换为数字,这个操作也与值之间的顺序有关。
实验
复制代码代码如下所示:
console.log(3×{ }); / / 0
console.log(3×{ 2 }); / / 6
console.log(3×{1,2}); / /南
console.log(3 + { 2 }); / / 32
var现在=新日期();
console.log(现在1); / /三损坏262014 10:51:39 GMT + 0800(CST)1
console.log(现在1); / / 1395802299223
console.log(现在2); / / 2791604598448
console.log(真+真); / / 2
console.log(2 +无效); / / 2,零转换为0
console.log(2 +未定义); / /南,定义转换为南
console.log(1 + 2 +猫); / / 3只猫
console.log(1 +(2 +猫)); / / 12只猫