函数声明提升,变量声明不提升吗

函数声明提升,变量声明不提升吗

相关截图:

http://img1.sycdn.imooc.com//climg/60d592560920d86506360440.jpg

相关代码:

<!DOCTYPE html>
<html lang="en">

<head>
<meta charset="UTF-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Document</title>
</head>

<body>
<script>
//声明提升
// function a(){
// console.log(2);
// }
// function a() {
// console.log(4);
// }
console.log(a); //没有(),输出函数体


var a=1;
console.log(a); //1


function a(){ //被提升
console.log(2);
}

console.log(a); //1


var a=3;
console.log(a); //3


function a() { //被提升
console.log(4);
}

console.log(a); //3


a(); //Uncaught TypeError: a is not a function

</script>
</body>

</html>


正在回答

登陆购买课程后可参与讨论,去登陆

1回答

同学你好,在预解析过程中,var声明的变量和function声明的函数都会被提升到当前作用域的顶部,而且函数声明会优先提升。如果存在同名函数,后提升的会覆盖先提升的;如果函数名与变量名相同,函数不会被同名变量覆盖,但是会被重新赋值,这段代码声明提升后的结果如下:

http://img1.sycdn.imooc.com//climg/60d598e309e30e8e11340747.jpg

祝学习愉快!

问题已解决,确定采纳
还有疑问,暂不采纳

恭喜解决一个难题,获得1积分~

来为老师/同学的回答评分吧

0 星
请稍等 ...
意见反馈 帮助中心 APP下载
官方微信

在线咨询

领取优惠

免费试听

领取大纲

扫描二维码,添加
你的专属老师