变量提升,声明提升,函数表达式不提升。最后执行匿名函数; 用function定义的函数声明会直接提升到最顶层(区分函数表达式)
以下代码执行后, num 的值是?
A
-1
B
3
C
1
D
2
正确答案:A
选A。该题考察的是JS解析顺序。
根据题干:
匿名函数,需要通过变量引用指向函数的运行结果。
var foo=function(x,y){
//赋值式函数 return x-y;
}
有名函数,可以单独定义。
function foo(x,y){
//声明式函数 return x+y;
}
实际调用 var num=foo(1,2); //调用赋值式函数 return x-y 为 -1
变量提升,声明提升,函数表达式不提升。最后执行匿名函数
函数提升优先级高于变量提升,且不会被同名变量声明时覆盖,但是会被变量赋值后覆盖。
考点:函数提升、变量提升
//实际代码过程如下:
function foo(x,y){ //函数是一等公民,
return x+y; //用function定义的函数声明会直接提升到最顶层(区分函数表达式)
}
var foo; //函数表达式中的变量提升
var num; //普通变量的变量提升
foo = function(x,y){ //赋值后此时foo是这个函数,不是最上面的那个了
return x-y;
}
num = foo(1,2);
js预解析机制,
js会预解析var和function这两个关键字,并给var赋值undefined,即
__EOF__

本文链接:https://www.cnblogs.com/longmo666/p/17833571.html
关于博主:评论和私信会在第一时间回复。或者直接私信我。
版权声明:本博客所有文章除特别声明外,均采用 BY-NC-SA 许可协议。转载请注明出处!
声援博主:如果您觉得文章对您有帮助,可以点击文章右下角【推荐】一下。您的鼓励是博主的最大动力!
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 全程不用写代码,我用AI程序员写了一个飞机大战
· DeepSeek 开源周回顾「GitHub 热点速览」
· 记一次.NET内存居高不下排查解决与启示
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· .NET10 - 预览版1新功能体验(一)