前端学习2 变量提升

JS的变量提升指的是代码在执行前会将变量提升到作用域的顶部,仅存在var声明变量中。

console.log(num + '件') // undefined

var num = 10

只提升生命,不提升赋值。 上段代码类似于

var num;

console.log(num + '件')

num = 10;

在函数作用域中也同样遵循该规则。

注意

1、let/const声明的变量在未声明即被访问时会报语法错误。

2、变量在var声明之前即被访问,变量的值为undefined。

3、let/const声明的变量不存在变量提升。

4、变量提升出现在相同作用域中。

函数提升

// 1、会把所有函数声明提升到当前作用域的最前面
// 2、只提升函数声明,不提升函数调用
fn()

function fn(){

    console.log('函数提升')
    
}
// 正常运行,因为js函数并不是立即执行的,只有在运行时,通过声明找到需要运行的函数就可以。
// 如果我们使用函数表达式声明一个函数,必须先声明函数后调用,否则会报错。
fun() // 报错

fun = function(){

	console.log('函数表达式')

}

注意

1、函数提升能够使函数的声明调用更灵活。

2、函数表达式不存在提升的现象。

3、函数提升出现在相同作用域当中。

#前端学习#
全部评论

相关推荐

05-14 16:34
已编辑
重庆大学 C++
  后续更新一下,二面之后通知没hc了然后另外一个部门打电话约三面(4月25号),接着隔一天又被另一个部门通知加面到第四面(4月28号),然后29号,30号没消息我以为要挂了或者可能继续第五面,接着劳动节之后竟然通知过了,然后当天offer,真是一波三折。  最后打算接了这个offer,虾皮offer不打算等了(据说虾皮给的很多?)。  最后总结一下,bg末九+一年acm竞赛破铜烂铁,项目一个cs144和webserver(学了一下mysql但是没人问过?疑似白学了)。给还在寻找实习的同学留下一些经验吧,首先简历一定要突出重点,我是按照  竞赛+项目+技术栈的顺序写的,建议像自我评价这样凑字数的就别写了。然后就是简历上写的东西自己一定要掌握透彻,建议不是很熟悉的就别写了。然后就是可以根据项目上写的每一条自己给自己提几个问(我遇到过几个面试官每条挨着问的),强烈建议仔仔细细看一下项目源码,搞清楚每个细节。然后就是建议烂大街的项目最好加点自己的新东西,如果项目代码上不会写,只需要会说就行。然后其他八股跟小林coding就好了,多看几遍就好了(尤其计网仔细研究一下,操作系统倒是问的很少,进程和虚拟内存那块可以仔细看看)。最后大家祝大家暑期顺利。附上offer图。---------------------------------------------------------再更:虾皮oc,给得很多。———————————————————————再更,快手OC,忘记问价了。  
点赞 评论 收藏
分享
评论
4
2
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务