首页   注册   登录
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
推荐关注
Meteor
JSLint - a JavaScript code quality tool
jsFiddle
D3.js
WebStorm
推荐书目
JavaScript 权威指南第 5 版
Closure: The Definitive Guide
V2EX  ›  JavaScript

我感觉 js 的坑特别多

  •  
  •   lxy · 2016-02-18 17:45:17 +08:00 · 1026 次点击
    这是一个创建于 858 天前的主题,其中的信息可能已经有所发展或是发生改变。
    ar = [NaN];
    for (var i in ar) { console.log(i);};
    // 输出 0 ! 至今不知为何。

    parseInt(0x9, 16);
    // 9
    parseInt(0x10, 16)
    // 22 <- insteresting!
        1
    Arrowing   2016-02-18 17:52:29 +08:00
    1 、 for 语句将 ar 当成 object 解析,因为数组本身就是一个 object ,数组的索引值与 object 的 key 对应。这里你可以这样理解 var ar = {0: NaN};for (var i in ar) { console.log(i);};

    2 、 http://www.w3school.com.cn/jsref/jsref_parseInt.asp

    parseInt(string, radix)

    参数 描述
    string 必需。要被解析的字符串。
    radix 可选。表示要解析的数字的基数。该值介于 2 ~ 36 之间。

    如果省略该参数或其值为 0 ,则数字将以 10 为基础来解析。如果它以 “ 0x ” 或 “ 0X ” 开头,将以 16 为基数。

    如果该参数小于 2 或者大于 36 ,则 parseInt() 将返回 NaN 。
        2
    Arrowing   2016-02-18 17:55:55 +08:00
    PS: parseInt(0x10, 16) 等于 parseInt(16, 16)
        3
    em2046   2016-02-18 17:59:37 +08:00
    @Arrowing 哈哈
        4
    vghdjgh   2016-02-18 17:59:56 +08:00
    object -> for...in
    array -> for...of
        5
    Troevil   2016-02-18 18:08:16 +08:00
    @Arrowing

    parseInt(0x10, 16) = 22
    parseInt('0x10', 16) = 16
    何解
        6
    YuJianrong   2016-02-18 18:16:46 +08:00
    推荐个文档,特别清楚。里面查一下就知道为什么是那个结果了。
    http://www.ecma-international.org/publications/standards/Ecma-262.htm
        7
    Arrowing   2016-02-18 18:38:44 +08:00   ♥ 1
    @Troevil

    parseInt(0x10, 16) = parseInt(0x10.toString(), 16) = parseInt('16', 16)
        8
    Troevil   2016-02-18 19:02:10 +08:00
    @Arrowing ... 晕了,原来如此..
        9
    SoloCompany   2016-02-18 21:01:47 +08:00
    也真是佩服柯南的耐心
    关于   ·   FAQ   ·   API   ·   我们的愿景   ·   广告投放   ·   鸣谢   ·   1821 人在线   最高记录 3541   ·  
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.1 · 19ms · UTC 15:33 · PVG 23:33 · LAX 08:33 · JFK 11:33
    ♥ Do have faith in what you're doing.
    沪ICP备16043287号-1