search

Home  >  Q&A  >  body text

面试题:在javascript中,1与Number(1)有什么区别

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

高洛峰高洛峰2919 days ago4519

reply all(5)I'll reply

  • 三叔

    三叔2016-11-22 09:14:53

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

    reply
    0
  • 三叔

    三叔2016-11-22 09:14:41

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

    reply
    0
  • 三叔

    三叔2016-11-22 09:14:26

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

    reply
    0
  • 三叔

    三叔2016-11-22 09:14:16

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

    reply
    0
  • 三叔

    三叔2016-11-22 09:13:48

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

    function Number(arg){  
      return arg
    }


    reply
    0
  • Cancelreply