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

js的词法分析

js的词法分析

墨色风雨 2019-04-21 20:41:25
x();varx=function(){console.log(1);}functionx(){console.log(2);}x();像这种先输出2在输出1,词法分析我理解的过来,我就想知道在词法分析后,函数正式执行的时候,函数声明式functionx(){console.log(2);}是不是就不再执行了,函数表达式还会执行varx=function(){console.log(1);}
查看完整描述

2 回答

?
潇潇雨雨

TA贡献1833条经验 获得超4个赞

x(1);//1输入的结果是functionx(x){...}执行结果,因为函数定义式提升了
varx=function(x){
console.log(x);
}
functionx(x){
console.log(x);
}
x(2)//2执行的是varx=function(x){...}定义的函数结果
//可以理解为就近原则(不是肉眼的就近,因为函数
//定义方式提升了,x(2)靠近了varx=function(){...});
第二种
x(1);//undefined因为varx=function(){}不会提升
varx=function(x){
console.log(x);
}
x(2)//2
希望对你有帮助
                            
查看完整回答
反对 回复 2019-04-21
?
慕森王

TA贡献1777条经验 获得超3个赞

函数定义语句functionx(){console.log(2)}是在解析时在内存中构建;
而函数表达式x=function(){console.log(1)}则是在运行时进行运算的。
至于词法分析只是解析过程的第一步而已,与函数定义语句和函数表达式是如何构建没有什么关系
                            
查看完整回答
反对 回复 2019-04-21
  • 2 回答
  • 0 关注
  • 329 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信