解决方案 »

  1.   

    会先尝试将参数转化为数字
    new Number([1,2]) //NaN
    new Number([])//0
    其他参数也都符合该方式,isNaN返回true的都是无法转化为数值的
    进一步原因就无法知晓了
      

  2.   


    Number([]) //0
    Number([1,2]) //NaNisNaN([]) -->isNaN(Number([]))-->isNaN(0)-->false 
    isNaN([1,2]) -->isNaN(Number([1,2]))-->isNaN(NaN)-->true
      

  3.   

    楼主,是这样的:isNaN(a)    等价于判断Number(a)是否等于NaN,所以你把要判断isNaN表达式 用Number输出一下,看结果就知道了。
            document.writeln("isNaN() -->" + isNaN() + ",Number:"+Number())
            document.write("<br/>")
            document.writeln('isNaN("") -->' + isNaN("") + ",Number:"+Number(""))
            document.write("<br/>")
            document.writeln('isNaN("1") -->' + isNaN("1") + ",Number:" + Number("1"))        document.write("<br/>")
            document.writeln('isNaN(" 1") -->' + isNaN(" 1") + ",Number:" + Number(" 1"))        document.write("<br/>")
            document.writeln('isNaN(" 1 ") -->' + isNaN(" 1 ") + ",Number:" + Number(" 1 "))        document.write("<br/>")
            document.writeln('isNaN("1 1") -->' + isNaN("1 1") + ",Number:" + Number("1 1"))        document.write("<br/>")
            document.writeln('isNaN("abc") -->' + isNaN("abc") + ",Number:" + Number("abc"))        document.write("<br/>")
            document.writeln('isNaN(null) -->' + isNaN(null) + ",Number:" + Number(null ))        document.write("<br/>")
            document.writeln('isNaN(undefined) -->' + isNaN(undefined) + ",Number:" + Number(undefined))        document.write("<br/>")
            document.writeln('isNaN(0/0) -->' + isNaN(0 / 0) + ",Number:" + Number(0/0))        document.write("<br/>")
            document.writeln('isNaN(1/0) -->' + isNaN(1 / 0) + ",Number:" + Number(1/0))        document.write("<br/>")
            document.writeln('isNaN(false) -->' + isNaN(false) + ",Number:" + Number(false ))        document.write("<br/>")
            document.writeln('isNaN({}) -->' + isNaN({}) + ",Number:" + Number({}))        document.write("<br/>")
            document.writeln('isNaN([]) -->' + isNaN([]) + ",Number:" + Number([]))        document.write("<br/>")
            document.writeln('isNaN([1,2]) -->' + isNaN([1, 2]) + ",Number:" + Number([1,2]))结果是Number([]) 是0, Number([1,2])结果是NaN
      

  4.   

    至于进一步,Number([])结果为什么是0, Number([1,2])结果是NaN是这 样的:
    对于非原子数据类型,为先执行toString(),
    Number ([]) ==> Number([].toString()) ==> Number("")  ==> 0Number ([1,2]) ==> Number([1,2].toString()) ==> Number("1,2")  ==> NaN