为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

正在回答

2 回答

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

1 回复 有任何疑惑可以回复我~

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

参照方法图:http://img1.sycdn.imooc.com//5807147c00019f3a03520073.jpg

1 回复 有任何疑惑可以回复我~

举报

0/150
提交
取消

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

我要回答 关注问题
意见反馈 帮助中心 APP下载
官方微信