V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
V2EX 提问指南
tyfulcrum
V2EX  ›  问与答

初学 JS,请教一个小问题

  •  
  •   tyfulcrum · 2016-09-10 02:28:57 +08:00 · 1322 次点击
    这是一个创建于 3002 天前的主题,其中的信息可能已经有所发展或是发生改变。

    在做这道题的时候,我实现的题中最后一个函数 nth 的返回结果总是 undefined ,明明在即将返回值的地方打 log 输出的都是正确的值。

    代码如下:

    function arrayToList(para) {
        if (para[0] !== undefined) { 
            var list = {
                value: para[0],
                rest: null
            };
    
            for (var i = 1, j = list;
                i < para.length; ++i , j = j.rest) {
                    j.rest = {
                        value: para[i],
                        rest: null
                    };
                }
            return list;
        }
    }
    
    function nth(list, n) {
        if (list !== undefined || list !== null) {
            if (n === 0) {
                // 此处打 log 结果依然为 list.value 的值
                return list.value;
            }
            else {
                nth(list.rest, --n);
            }
        }
    }
    console.log(nth(arrayToList([10, 20, 30]), 1)); //此处输出为 undefined
    
    5 条回复    2016-09-10 19:19:02 +08:00
    binux
        1
    binux  
       2016-09-10 02:34:45 +08:00   ❤️ 1
    ```
    else {
    return nth(list.rest, --n);
    }
    ```
    tyfulcrum
        2
    tyfulcrum  
    OP
       2016-09-10 02:36:28 +08:00
    @binux 多谢,把自己递归晕了 Orz
    littlepanzh
        3
    littlepanzh  
       2016-09-10 12:48:41 +08:00 via iPhone
    我读书少……
    if (list !== undefined || list !== null)
    这个 if 有什么卵用吗?
    tyfulcrum
        4
    tyfulcrum  
    OP
       2016-09-10 19:15:15 +08:00 via iPhone
    @littlepanzh 原意是怕传进来的不是预期的类型导致运行时错误。请问这种情况是用 try catch 更好么?我初学不知道动态类型语言在这种情况下的惯例。
    littlepanzh
        5
    littlepanzh  
       2016-09-10 19:19:02 +08:00
    @tyfulcrum 应该用&&不是||,你这个 if 什么条件都会进去的,根本起不到任何作用。
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   1357 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 23ms · UTC 23:41 · PVG 07:41 · LAX 15:41 · JFK 18:41
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.