Javascript语法 - 如果语句和函数调用

时间:2015-11-29 15:20:00

标签: javascript node.js

我有一个语法问题,让我说我有以下功能。它接收到拼写检查的文本并返回正确的文本或假,如果文本拼写正确。

var spellCheck = function (txt) {
    var spelledTxt = spell(txt);
    if (spelledTxt =! txt) { //the text had a typo.
        return spelledTxt;
    }
    return false;
}

现在在一个不同的函数中我想从ElseIf语句调用这个函数,我想只有在文本有错误的情况下才能进入该语句。类似的东西:

if(something){
    do something....
}else if(spellCheck(word)){
    do something with the spelledTxt that was returned from "spellcheck"
}

我可以这样做:

else if(var spelledWord = spellCheck(word))
    do something with spelledWord.

我忘记了一件非常重要的事情:spellCheck(word)功能很重,如果不需要,我想避免调用它。这意味着只有当我们到达else if()时才会被召唤,而不是更快。

2 个答案:

答案 0 :(得分:5)

任何表达式在<ul class="cols"> <li> @yield('comment') </li> </ul> 语句中都有效,并且包含赋值表达式。赋值表达式的值是赋值。

在您的情况下,函数调用的返回值是表达式的值,但if使它成为语句而不是简单表达式。

您需要从语句中删除变量声明部分,然后才可以。

或者,您可以这样做:

var

答案 1 :(得分:-1)

你可以做到这一点。赋值操作返回一个值,您可以将其用作布尔表达式。

但你应该记住:

  1. 在Javascript var语句中是函数作用域。
  2. 有一个&#39;提升机&#39; Javascript中的行为。
  3. 由于1,2和稍后的代码重构,您可以轻松地为此代码引入错误。
  4. 在Javascript is a bit messy中输入强制。
  5. 阅读带有副作用的代码,其中一个操作可以同时导致2个不同的逻辑结果 - 真的很难。
  6. 我至少考虑使用严格的比较运算符:if (spelledWord = spellCheck(word) !== '') 如果可能的话,尝试通过调用spellCheck函数来记忆(缓存)结果。在这种情况下,您根本不需要将两个操作合并为一个。