课程
/前端开发
/JavaScript
/JavaScript深入浅出
函数的声明和函数表达式声明的函数为什么会被前置????????
2016-10-18
源自:JavaScript深入浅出 6-2
正在回答
由于解析器在向执行环境加载数据时,会率先读取函数声明,并使其在执行任何代码之前可用,所以存在函数声明提升,对代码求值的时候,js引擎在第一遍会声明函数并将它们放到源代码树的顶部,所以即使调用函数的语句在声明函数的前面也能正常执行。但是对于函数表达式,它必须等到解析器执行到它所在的代码行,才会真正被解释执行。
1、函数的声明会被前置,如:function foo(){}; 会初始化在一个vo变量对象里面,这个函数的值为:foo函数本身。2、函数的表达式会被忽略掉,更不会被前置,如:var a =function fpp(){};这里的fpp是一个函数表达式(因为他要是赋值给a)在这里初始化的时候会被忽略只保留变量a,且变量a的值初始化为undefined。
参照方法图:
举报
由浅入深学习JS语言特性,且解析JS常见误区,从入门到掌握
2 回答函数声明和var声明谁先被提前
1 回答javascript中函数一共分为3种:函数申明 函数表达式和构造函数 对吗?
4 回答关于函数内变量的声明?
3 回答函数声明不是可以立即调用的吗
1 回答怎么理解函数表达式立即被调用