【问题标题】:Not all code paths return a value (JavaScript)并非所有代码路径都返回值 (JavaScript)
【发布时间】:2013-10-06 08:33:23
【问题描述】:
document.getElementById('search_field').onkeypress = function(e) {
        if (!e) e = window.event;
        var keyCode = e.keyCode || e.which;
        if (keyCode == '13') {
            window.location.href = '/search/?s=' + $('#search_field').val();
            return false;
        } 
    };

最后一个括号显示错误,并非所有代码路径都返回一个值,这里似乎有什么问题? 谢谢

【问题讨论】:

  • 这不是 jquery...它的纯 js 代码除了 $('#search_field').val()
  • 无论您使用什么工具,它都会向您展示在处理大量 JavaScript 代码时会遇到问题。 :-)

标签: javascript return-path


【解决方案1】:

return true.结束你的函数

如果按下 13 之后的任何其他键,流程应该会正常继续。

【讨论】:

  • return undefined 会更符合现有代码。
  • @T.J.Crowder 我以为 js 中的所有函数都默认返回 undefined 。如果我错了,请纠正我。
  • @Yoda:这实际上是正确的。该规范实际上区分了函数调用的多个“结果”:抛出、返回值或无返回值。但这只是规范的事情,因为不抛出的调用表达式(对函数的实际调用)的结果总是有结果,如果函数没有返回特定的东西,结果是undefined
  • 您收到的“错误”只是一个警告。您创建了一个函数,它的结果没有返回值。在您的情况下,这将起作用,但如果其他人依赖此功能,则行为可能是意外的,因此会发出警告。
【解决方案2】:

试试这个:

document.getElementById('search_field').onkeypress = function(e) { 如果(!e){ e = 窗口.事件; } var keyCode = e.keyCode || e.哪个; if (keyCode == '13') { window.location.href = '/search/?s=' + $('#search_field').val(); 返回假; } 返回真; };

更多...我认为您可能不会同时使用纯javascript和jquery

所以你宁愿选择

  • JAVASCRIPT: document.getElementById('search_field').onkeypress = function(e) { if (!e) e = window.event; var keyCode = e.keyCode || e.哪个; if (keyCode == '13') { window.location.href = '/search/?s=' + document.getElementById('search_field').value; 返回假; } 返回真; };
  • 查询 $("#search_field").keypress(函数(事件){ if ( event.which == 13 ) { event.preventDefault(); window.location.href = '/search/?s=' + $(this).val(); 返回假; } 返回真; });

【讨论】:

  • 总是返回 false 将导致他的文本框不会更新其他按键。他想重定向 onEnter 所以只有 enter 按键应该返回 false。
  • @Kristof 问题不是很清楚......我们只知道该函数并不总是返回一些东西......他没有谈论任何文本框,是吗? !
  • 他没有,但他正在将一个函数绑定到一个名为 search_field 的元素的 onkeypress。我会说可以安全地假设搜索字段实际上是一个搜索字段,用户可以在其中输入搜索值,然后按回车键,不是吗?
  • @Kristof 我同意你的看法。所以你同意我的更正:return true 任何其他键码。
【解决方案3】:

忽略你的工具。事件处理程序不必在每种情况下都返回一个值,只要一个特定的路径执行return false 就可以了。

【讨论】:

    猜你喜欢
    • 2011-12-17
    • 1970-01-01
    • 1970-01-01
    • 2021-11-08
    • 2016-02-14
    • 2014-04-02
    • 2019-05-26
    相关资源
    最近更新 更多