美文网首页
函数声明? 函数表达式

函数声明? 函数表达式

作者: Moment929 | 来源:发表于2023-03-17 22:51 被阅读0次

    错题修改

    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 函数名称(可选)(参数:可选){ 函数体 }

    相关文章

      网友评论

          本文标题:函数声明? 函数表达式

          本文链接:https://www.haomeiwen.com/subject/ktrcxqtx.html