避免在if condition-Javascript中使用函数

Avoid using functions inside if condition - Javascript

本文关键字:函数 condition-Javascript if      更新时间:2023-09-26

为什么要避免调用函数中if条件内部的函数?例如:

var numberChoice = function(number){
   if (number == 1){
       alert("You have choosen 1");
       nextLevel();
   }
   else if(number == 2){
       alert ("You have choosen 2");
       nextLevel2();
   }
   else{
       alert("Please choose a number within range 1-2");
       guessAgain();
   }
};
var number = prompt("What is your number?");

我可能误解了发生的事情。你能解释一下吗?

function example(){
  function a() {} // Okay 
  if (something) {
     function b() {} // Danger! 
  } 
}

马里恩·哈弗贝克(2014-12-04)。Eloquent JavaScript:A Modern Introduction to Programming(Kindle位置1168-1169)。无淀粉压榨。Kindle版。

除非您的函数(在if条件内)是异步的,否则没有问题。您正在使用的函数是同步的,这意味着您的脚本将完成执行,并在进入下一个任务之前首先返回一个值,在这种情况下,它将正常工作。对于异步函数(与其他指令行并行执行),则该函数的结果尚未返回,并且脚本将在没有正确值(返回值)的情况下继续执行,这将导致问题。

在您的两个示例中没有问题。

没有任何规则不允许在if条件下调用函数。

唯一的一点是当你有几个如果在同一次检查时发出警告:

if (number === 1) {
  function1();
}
    if (number === 2 ) {
       function2(); 
}

在这种情况下,如果在函数调用时不将return放在函数末尾,则将计算其他条件。

更好的代码是使用elseswitch

在你的情况下没有问题。