js专项之变量提升和函数提升题目
变量提升题目:
(function(){ a=5 console.log(window.a) var a=10 console.log(a) })()
答案如下(还请先思考哦)
//编译后 (function(){ var a; a=5; console.log(window.a) //undefined a=10; console.log(a) //10 })()
函数提升题目:
function test(){ console.log(1,foo); console.log(2,bar); var foo='hello' console.log(3,foo); var bar =function(){ return 'world' } function foo(){ return 'hello' } } test()
答案如下:
//编译后
//函数提升优先级大于变量提升
function test(){ function foo(){ return 'hello' } var foo; var bar; console.log(1,foo); //foo(){ } console.log(2,bar); //undefined foo='hello' console.log(3,foo); //hello bar =function(){ return 'world' } } test()
总结:
1.对于用var声明的变量,声明会提升到其所在作用域的顶端,但赋值操作不会提升。
2.函数声明同样也会提升,这里仅限于函数声明,并不包含函数表达式。
3.如果变量名和函数名一样的话,函数提升优先级高于变量提升。
4.如果存在两个函数声明,则先出现的声明先提升,后出现的声明后提升,函数名相同的时候,后提升的会覆盖先提升的。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· 【自荐】一款简洁、开源的在线白板工具 Drawnix
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 园子的第一款AI主题卫衣上架——"HELLO! HOW CAN I ASSIST YOU TODAY
· 无需6万激活码!GitHub神秘组织3小时极速复刻Manus,手把手教你使用OpenManus搭建本