问答详情
源自:6-2 [JavaScript]函数声明与表达式

函数的声明和函数表达式声明的函数为什么会被前置????????

函数的声明和函数表达式声明的函数为什么会被前置????????

提问者:勇闯极限 2016-10-18 21:51

个回答

  • 鄢栋
    2017-02-23 11:00:44

    由于解析器在向执行环境加载数据时,会率先读取函数声明,并使其在执行任何代码之前可用,所以存在函数声明提升,对代码求值的时候,js引擎在第一遍会声明函数并将它们放到源代码树的顶部,所以即使调用函数的语句在声明函数的前面也能正常执行。但是对于函数表达式,它必须等到解析器执行到它所在的代码行,才会真正被解释执行。

  • lym_0001
    2016-10-19 14:38:31

    1、函数的声明会被前置,如:function foo(){}; 会初始化在一个vo变量对象里面,这个函数的值为:foo函数本身。
    2、函数的表达式会被忽略掉,更不会被前置,如:var a =function fpp(){};这里的fpp是一个函数表达式(因为他要是赋值给a)在这里初始化的时候会被忽略只保留变量a,且变量a的值初始化为undefined。

    参照方法图:http://img.mukewang.com/5807147c00019f3a03520073.jpg