首页 > 其他 > 详细

函数声明与函数表达式的区别

时间:2021-04-01 23:05:22      阅读:15      评论:0      收藏:0      [点我收藏+]

函数声明

function functions(flag) {
    if (flag) {
      function getValue() { return ‘a‘; }
    } else {
      function getValue() { return ‘b‘; }
    }

    return getValue();
}

函数表达式

function functions(flag) {
    if (flag) {
      var getValue=function() { return ‘a‘; }
    } else {
      var getValue=function() { return ‘b‘; }
    }

    return getValue();
}

 

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

函数表达式,当解析器执行到它所在的代码行时,才会真正被解释执行,所以两个逻辑分支可以分别执行

 

 

function 函数名(){}   和  var 函数名 = function(){}的解析顺序的区别 
前者是在执行之前就会被解析    后者是在执行过程中
 
 
 
函数声明是做了完全提升的,这使你在函数声明前就可以进行函数调用。变量声明是部分提升,只有声明会被提升,赋值(包括函数表达式)操作不会被提升,因此变量声明提前,但是赋值不会被覆盖。

函数声明与函数表达式的区别

原文:https://www.cnblogs.com/xiaocaizhang/p/14607736.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!