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

js的词法分析

js的词法分析

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

2 回答

?
MMMHUHU

TA贡献1834条经验 获得超8个赞

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-13
?
噜噜哒

TA贡献1784条经验 获得超7个赞

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

添加回答

举报

0/150
提交
取消
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号