老师 为什么第一个不是输出undefined,是哪里理解错了
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title></title>
</head>
<body>
<script>
console.log(a);//function a(){console.log(4);}
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();//报错
// 预解析后
// function a(){
// console.log(2);
// }
// function a(){
// console.log(4);
// }
// var a=undefined;
// console.log(a);//undefined
// var a=1;
// console.log(a);//1
// console.log(a);//1
// var a=3;
// console.log(a);//3
// console.log(a);//3
// a();//此时a已经被3赋值,不是一个函数,所以调用会报错
</script>
</body>
</html>
正在回答
同学你好,预解析后a的值为function () {console.log(4) } , 所以第一次输出a的值应该为function a() {console.log(4)},其他的理解是对的,结合下图注释理解:
祝学习愉快~
恭喜解决一个难题,获得1积分~
来为老师/同学的回答评分吧
0 星