变量提升,声明提升,函数表达式不提升。最后执行匿名函数; 用function定义的函数声明会直接提升到最顶层(区分函数表达式)

以下代码执行后, num 的值是?

var foo=function(x,y){ return x-y; } function foo(x,y){ return x+y; } var num=foo(1,2);

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 许可协议。转载请注明出处!
声援博主:如果您觉得文章对您有帮助,可以点击文章右下角推荐一下。您的鼓励是博主的最大动力!
posted @   龙陌  阅读(29)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 全程不用写代码,我用AI程序员写了一个飞机大战
· DeepSeek 开源周回顾「GitHub 热点速览」
· 记一次.NET内存居高不下排查解决与启示
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· .NET10 - 预览版1新功能体验(一)
点击右上角即可分享
微信分享提示