Javascript-省略返回False

Javascript-省略返回False,javascript,Javascript,我最近意识到,当我使用一个函数在数组上循环并返回一个匹配项时,我实际上不需要在最后返回false/null 例如,如果我有: *编辑示例。最初的示例来自一个函数,我试图简化它,但忘记更改它的名称/上下文。很抱歉给你带来了困惑。下面是一个更适合我问题标题的例子: var hasKey = hasKeyMatch(key); function hasKeyMatch(key) { for (var i = 0; i < array.length) { if (array

我最近意识到,当我使用一个函数在数组上循环并返回一个匹配项时,我实际上不需要在最后返回false/null

例如,如果我有:

*编辑示例。最初的示例来自一个函数,我试图简化它,但忘记更改它的名称/上下文。很抱歉给你带来了困惑。下面是一个更适合我问题标题的例子:

var hasKey = hasKeyMatch(key);
function hasKeyMatch(key) {
    for (var i = 0; i < array.length) {
        if (array[i].key === key) {
            return true;
        }
    }
};
var hasKey=hasKeyMatch(key);
函数hasKeyMatch(键){
对于(变量i=0;i
我实际上不需要返回false,因为如果没有返回key,hasKey将是未定义的。所以我仍然可以使用hasKey作为布尔值

但这被认为是好的风格吗?我意识到在Java等语言中,有一个“备份”返回是必要的,所以有些人把这个习惯带到了JS中。但我认为尽量减少不必要的回报是理想的,尽管我不知道回报的实际成本

当我看到下面问题的答案时,我对他为什么选择返回一个已经被推送到所需数组的变量感到困惑。我假设他的返回是有意的,他不打算将返回的变量存储在任何地方。在函数末尾返回变量是否有好处(比如垃圾收集)


我喜欢使用期望返回布尔结果的方法(即以
is
has
开头的方法/函数)返回
true
false
。当然,JavaScript可以轻松地返回
未定义的
,还可以将真实性和虚假性分配给非
的值。我觉得返回
true
false
比返回
key
的值更好。在这里返回
键有什么用?在调用函数之前,您已经有了
键的值

很难说作者为什么选择返回
c
并将其推入
状态
数组。可能
states
数组用于其他用途

我意识到在Java等语言中,有一个“备份”返回是必要的,所以有些人把这个习惯带到了JS中

我不完全清楚你这是什么意思;我发现自己不是在Java中这样做的。

(忽略真实/虚假的辩论)


我个人不介意一个函数返回<代码>未定义< /代码>,在这里它是有意义的,但是我会考虑添加<代码>返回空洞0;<代码>结束,表明这是故意的。函数末尾缺少return语句,这对我来说意味着它永远不应该出现在那里。性能在这里不是一个真正的问题。

不是因为您没有在方法语句中指定返回值
函数hasKeyMatch(key)
?Java和其他语言通常要求您指定实际返回的内容。我说,如果事情失控,用“default”返回语句结束语句总是一种好的做法。以防万一。一些奇怪的事情发生了,你的代码在某个特定的位置不工作,它会捕获它并返回一些有效的东西,而那些未定义的东西可能会破坏你的代码

编辑:


如果您也在寻找未定义的返回调用,那么最好指定一个未定义的返回调用。如果有人正在阅读此代码,他们将无法知道实际应该返回什么。这就是脚本语言的问题。

这是一个关于代码稳定性的问题,如果方法名称表明结果是错误的,则应始终返回false而不是undefined

与所有与代码风格有关的事情一样,这不是对错的问题(),但如果您想让其他人理解您正在做什么并避免愚蠢的bug,这一点很重要。可靠的代码通过按预期的行为避免了做愚蠢事情的可能性

例如:
isA()&&isB()| |!isA()&!isB()
可以写得更简短一些,如isA()==isB()
。 如果将这两个函数定义为一个(isA)返回false,另一个(isB)返回undefined,则第二个表达式的行为可能不会像人们所怀疑的那样


请参阅:

这是一个意见问题,但我个人认为,对于返回匹配值(如果找到)的函数,可以使用隐含的
未定义的
返回值。尽管函数名为hasKeyMatch()
,表示返回值为
true
false
,但返回的值与传递给函数的值相同。因此,在这种情况下,如果您在找到匹配项的数组中返回索引,并且如果未找到,则返回
-1
,那么(对我来说)会更有意义。(这就是它的作用。)我将有一个名为return
true
false
的函数。无论如何,不要因此返回密钥-如果您寻找的密钥的计算结果是错误的,该怎么办?函数会找到它,但会返回一些拒绝的结果。我更喜欢返回布尔值(真/假)与truelean值(真/非真),除非后者有意义(即,返回的值本身用于其真实/虚假性质之外的其他用途。如果返回的值预期可用于其他用途(且不会改变真实/虚假的含义),然后返回。抱歉,我添加了一个未定义的示例,导致了主题外的讨论。我并不是真的在寻找有关实际示例代码的帮助,只是在概念/样式级别上寻求建议。我不认为讨论是主题外的,因为返回
未定义的
是否有意义取决于函数的功能关于函数更新版本的所有/风格建议是,我更喜欢在结尾处使用
返回false
,因为名称
hasKeyMatch()
意味着布尔返回。
undefined
表示