函数声明? 函数表达式

2023-03-17  本文已影响0人  Moment929

错题修改

function getValues(flag) {
    if (flag) {
      function getValue() { return 'a'; }
    } else {
      function getValue() { return 'b'; }
    }

    return getValue();
}
   var getvalue=null;
    if (flag) {
      getValue = function(){ return 'a'; }
    } else {
      getValue = function() { return 'b'; }
    }
    return getValue();
}

这道题是考函数声明与函数表达式的区别,原题的写法,是在两个逻辑分支里面各有一个函数声明,但是对于函数声明,解析器会率先读取并且让其在执行任何代码前可用,意思就是别的代码还没运行呢,两个getValue声明已经被读取,所以总是执行最新的那个。函数表达式,当解析器执行到它所在的代码行时,才会真正被解释执行,所以两个逻辑分支可以分别执行

//另外,还有一点需要提醒一下,函数声明在条件语句内虽然可以用,但是没有被标准化,也就是说不同的环境可能有不同的执行结果,所以这样情况下,最好使用函数表达式:

//函数声明:
function 函数名称 (参数:可选){ 函数体 }

函数表达式:
function 函数名称(可选)(参数:可选){ 函数体 }

上一篇 下一篇

猜你喜欢

热点阅读