【面试技巧】为数值类型的大致分为4种情况

大家好。很多前端面试题都会测试其他类型到数值类型的转换。尤其是涉及到隐式转换的时候,我们现在就来讨论一下:

从其他类型转换为数值类型的值大致分为4种情况:

(1)原始类型的参数转换为数值:

基本类型到数字的转换其实很简单基本,但是需要加强记忆:

null:0

未定义:NAN

值:保持不变

真:1

闪光:0

string:类似于使用Number将字符串转换为数值,即数值的字符串形式可以正确转换为数值,其他的都会转换为NAN。

(2)普通对象类型转数值

将普通对象转换为值会先将toString方法转换为基本数据类型,然后再使用ToNumber方法将其转换为值,如:

[]:0

[3]:4

[1,2,3] 首先转换为字符串为 1,2,3,然后转换为数字 NAN

{}转换为“Object object”形式的字符串,再转换为数值NAN

(3)定义valueof方法的对象

对于有valueof方法的对象,会调用valueof方法,并转换valueof方法的返回值。参考上面的(1)和(2).

比如对象的vlaueof方法的返回值是字符串“12”,它定义了对象a={a:”jkdgh”}。转换为值时,根据返回值“12”js判断是否是英语数字js判断是否是英语数字,将其转换为值12.

(4)定义toString方法的方法的对象

对于带有 toString 方法的对象,会调用 toString 方法,并转换 toString 方法的返回值。参考上面的(1)和(2).

例如对象的toString方法的返回值为字符串“789”,对象定义为a={a:”jkdgh”}。转换为数值时,返回值为“789”,再转换为数值789.

(5)因为对象的valueof方法和toString方法都会影响对象转数值的结果,现在在对象上定义valueof方法和toString方法来检查优先级两者都有。

定义valueof方法返回字符串12,定义toString方法返回字符串“789”,获取到的对象的值为12,所有valueof的优先级都高于toString,有时优先使用valueof是值。

示例如下:

Object.prototype.valueOf=function(){return “12”}

Object.prototype.toString=function(return “789”)

a={a:4}

a:4}

当使用+a强制将对象a转换为整数时,得到的数据为12.

© 版权声明
THE END
喜欢就支持一下吧
点赞0
分享
评论 抢沙发

请登录后发表评论