首页 > 试题广场 >

+new Array(017) 输出?( )

[单选题]
+new Array(017) 输出?( )


  • 17
  • NaN
  • 15
  • Error
推荐
+ new Array(017)  等价于  + new Array(15) (15的八进制是17)
按照规则,数组对象应该采用Number,所以先执行valueOf,发现valueOf返回的是自己,所以继续执行toString,过程如下:
Number(new Array(15)) 
// new Array(15).valueOf()不是原始值,所以执行toString()
Number(new Array(15).toString()) 
Number(",,,,,,,,,,,,,,") 
NaN
所以答案是NaN
编辑于 2017-03-18 08:56:50 回复(12)
首先,前面+是一元运算符,相当于我们说的正负,无运算效果,但是可以将字符串等转为number类型。  
 此题中017其实是八进制,故而是是Array(15)。  
这里相当于对于一个未赋值但是长度为15的数组进行number类型转化,其结果为NaN
编辑于 2017-04-11 12:02:23 回复(12)
017八进制即15, new Array(017) 等价于  new Array(15),+操作符作为一元运算符时,会将参数转化为数字返回
console.log(+new Array(2));  //当new Array数组长度为2以上,结果都是NaN,为空,0,1时,结果是0;
console.log(+[]);//0
console.log(+[1]);//1
console.log(+[1,2])//NaN
console.log(+[undefined]);//0
console.log(+[undefined,undefined]);//NaN

发表于 2017-03-22 15:05:57 回复(5)
思路如下:
1.一元加法运算符把操作数转换为数字(或NaN),并返回这个转换后的数字。如果操作数本身就是数字,则直接返回这个数字。
2.new Array(017)中的017是八进制表示,对应的十进制为15,即为一个有15个元素的数组。
3.这段代码要做的是尝试将此数组转换为数字。
4.数组是对象的特殊形式。对象到数字的转换首先会尝试使用valueOf(),若不是返回的原始值则调用toString()方法。
5.数组继承了默认的valueOf()方法,这个方***返回一个对象而不是一个原始值(undefined,null,Boolean,number,string)。因此数组到数字的转换则调用toString()方法

chrome测试:
typeof([1,2].valueOf());  //"object"
[1,2].toString();  //"1,2"
+"1,2";  //NaN
发表于 2017-10-19 20:25:24 回复(2)

此题考查 JavaScript 类型转换之转数字,记住两点:转换的方法转换的规则

  • 转换的方法有两种:Number()一元 + ,二者完全等价。后者用得更多,因为比较方便。

    var x = '50';
    Number(x);  // 50
    +x;         // 50
    
  • 转换的规则也很简单:能转数字的转数字,不能转数字转成 NaN。不过要注意 null 和 undefined。

    // 什么叫做能转数字?凭直觉。如果你的直觉还不够,最好在 console 控制台跑一下下面的例子
    +''        // 0
    +'123'     // 123
    +'123a'    // NaN
    +[]        // 0
    +[12]      // 12
    +[12, 34]  // NaN
    +true      // 1
    +false     // 0
    +undefined  // NaN
    +null      // 0
    +{}        // NaN
    

    为什么说重点注意 nullundefined 转数字的情况呢。首先明确一下 undefinednull 的区别:

    • undefined : 当声明一个变量未初始化时,其值默认为 undefined; 当试图访问对象上不存在的属性时, 得到 undefined ,当函数没有显示定义返回任何东西时,它返回 undefined 。我认为,undefined 是为了处理意料之外的情况。
    • null : 它表示一个空对象,var obj = null 表示变量 obj 没有引用任何内存,它是意料之中的空对象。

    so, undefined 表示意料之外,转数字时得 NaN, null 表示意料之中,转数字时得 0。

编辑于 2018-08-27 21:17:06 回复(0)
'+new Array(017)' 请告诉我 我看到的是不是一个字符串,加了 ‘’ 不就是一个字符串
发表于 2017-06-19 18:41:13 回复(0)
首先,前面+是一元运算符,相当于我们说的正负,无运算效果,但是可以将字符串等转为number类型。    此题中017其实是八进制,故而是是Array(15)。   这里相当于对于一个未赋值但是长度为15的数组进行number类型转化,其结果为NaN
发表于 2019-09-02 16:23:52 回复(0)
+ 是js高程3的第三章基础啊概念 操作符里面的一元操作符 
+n是前置操作符  n+是后置操作符 这里考察没涉及到前置后置的差别
 但涉及到一元操作符的执行对象的必须是number  非number类型会强制转为number
所以  new Array(017) 长度15的数组对象转为number对象为 NaN 
发表于 2018-05-24 10:24:07 回复(0)
这道题目的关键是要想到+既可以做一元运算符,也可以做二元运算符。在这题里,只有一个操作数,所以是一元运算符。 对于接上一个数字来说,它是正整数的意思,而对于接上其他数据类型,它的作用是将其的类型转化为数字类型。对于长度大于2的数组而言,这样的转换都会得到NaN,对于只有一位空元素或者元素值为0或者长度为0的数组来说,这样的转换得到的结果就是0,其它的是将一位的数组的元素转化为数字而已,具体结果是情况而定。
发表于 2018-04-14 01:08:33 回复(0)
加号可使数组转换为数值型,数组长度大于2时为nan.小于时转为0
发表于 2017-07-21 00:05:32 回复(0)
为什么外面还要套一对单引号?不是字符串吗?
发表于 2017-06-12 15:10:24 回复(1)
Array构造函数只带一个数字参数时,该参数会被作为数组的预设长度,而非只充当数组中的一个元素。——《你不知道的js》
发表于 2019-10-20 10:28:33 回复(0)
数组长为15
发表于 2019-09-19 15:53:01 回复(0)
加号+是隐式类型转换
发表于 2019-09-05 23:28:09 回复(0)
017八进制即15, new Array(017) 等价于  new Array(15),+操作符作为一元运算符时,会将参数转化为数字返回
Number(new Array(15)) 
Number(new Array(15).toString()) 
Number(",,,,,,,,,,,,,,") 
NaN
发表于 2019-03-10 14:14:05 回复(0)
017是八进制,转为10进制为15
发表于 2018-12-11 17:28:11 回复(0)
017八进制即15, new Array(017) 等价于  new Array(15),+操作符作为一元运算符时,会将参数转化为数字返回
console.log(+new Array(2));  //当new Array数组长度为2以上,结果都是NaN,为空,0,1时,结果是0;
console.log(+[]);//0
console.log(+[1]);//1
console.log(+[1,2])//NaN
console.log(+[undefined]);//0
console.log(+[undefined,undefined]);//NaN
发表于 2018-06-02 22:44:29 回复(0)
017八进制 15 +new Array(017) 相当于+[undefined,undefined,。。。,undefined] 十五个undefined +号将后面数组转化为number类型为NaN
发表于 2018-03-05 11:23:15 回复(0)
哪有他妈那么多转换?'这里面不是字符串' 就应该原样输出
发表于 2018-01-31 10:25:53 回复(0)
我理解的这就是js数值类型的自动转换, +运算符在计算结果时会将 new Array(15)转化为数字再进行计算,而new Array(15)是一个长度为15的空数组,不能转化为数字,会得到NaN,因此最终结果为NaN。
如果运算式为 + new Array(1)或+ new Array(),则最终结果为0,如果运算式为 + [5],则最终结果为5
发表于 2017-12-27 00:04:08 回复(0)
说实话,这个题目没有看懂。但是答案貌似在引导我转换number。
什么东西。怎么能转化成我们高大上的number类型呢。NaN。
发表于 2017-04-16 22:47:51 回复(0)