Javascript-省略返回False
我最近意识到,当我使用一个函数在数组上循环并返回一个匹配项时,我实际上不需要在最后返回false/null 例如,如果我有: *编辑示例。最初的示例来自一个函数,我试图简化它,但忘记更改它的名称/上下文。很抱歉给你带来了困惑。下面是一个更适合我问题标题的例子:Javascript-省略返回False,javascript,Javascript,我最近意识到,当我使用一个函数在数组上循环并返回一个匹配项时,我实际上不需要在最后返回false/null 例如,如果我有: *编辑示例。最初的示例来自一个函数,我试图简化它,但忘记更改它的名称/上下文。很抱歉给你带来了困惑。下面是一个更适合我问题标题的例子: var hasKey = hasKeyMatch(key); function hasKeyMatch(key) { for (var i = 0; i < array.length) { if (array
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
,那么(对我来说)会更有意义。(这就是它的作用。)我将有一个名为returntrue
或false
的函数。无论如何,不要因此返回密钥-如果您寻找的密钥的计算结果是错误的,该怎么办?函数会找到它,但会返回一些拒绝的结果。我更喜欢返回布尔值(真/假)与truelean值(真/非真),除非后者有意义(即,返回的值本身用于其真实/虚假性质之外的其他用途。如果返回的值预期可用于其他用途(且不会改变真实/虚假的含义),然后返回。抱歉,我添加了一个未定义的示例,导致了主题外的讨论。我并不是真的在寻找有关实际示例代码的帮助,只是在概念/样式级别上寻求建议。我不认为讨论是主题外的,因为返回未定义的是否有意义取决于函数的功能关于函数更新版本的所有/风格建议是,我更喜欢在结尾处使用返回false
,因为名称hasKeyMatch()
意味着布尔返回。undefined
表示