面试题:在javascript中,1与Number(1)有什么区别
高洛峰
高洛峰 2016-11-22 09:09:26
0
5
4526

类似的问题还有'a'与String('a')等,求解释

高洛峰
高洛峰

拥有18年软件开发和IT教学经验。曾任多家上市公司技术总监、架构师、项目经理、高级软件工程师等职务。 网络人气名人讲师,...

全部回复(5)
三叔

从原型角度考虑呢,1.__proto__会报错,Number(1).__proto__不会报错

三叔

Number不加new调用是转换函数,如果是Number实例则直接返回,否则转换成等价的Number表示形式。

三叔

我这样理解的。
1 是常量;
Number(1)是 调用Number(1)的返回值。

三叔

在控制台打1 === Number(1) 也是true
然后和同事讨论了一下, 目前看来唯一的区别就是
var a = 1 是一个常量, 而Number(1) 是一个函数, 
当1 === Number(1) 做判断的时候也是拿Number的执行结果进行对比, 
所以这就是根本的区别

三叔

当Number被调用时,如果有参数,就会对参数执行toNumber方法
toNumber方法被调用时,如果参数是数字,直接返回参数(不经过转换).
所以如果Number被调用时参数是数字,其实相当于

function Number(arg){  
  return arg
}


热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板