预解析详解

预解析:把变量的定义(仅仅是定义)提升到作用域的最顶上

预:事先

通俗的意思就是先解析再运行我们所需要的代码。

有范围的区分

  1. 作用域:

<script>

Function show(){

  Var a = 12;

}

Alert(a);

</script>

注意:ReferenceError: a is not defined   程序会报错

  1. Script

<script>

Var a = 12;

</script>

<script>

Alert(a);

</script>

输出:12

 

<script>

alert(a);

</script>

<script>

var a = 12;

</script>

报错:ReferenceError: a is not defined


1 变量不带var 不会预解析

<script>

alert(a);

a = 12;

</script>

报错:ReferenceError: a is not defined

<script>

alert(a);

var a = 12;

</script>

输出:undefined
2 等号后面的不会预解析

var show = function show()
{
alert('1');
}
alert(show());

输出:1;

输出:undefined.

var show = function show()
{
alert('1');
}
alert(show);

输出:function show()
{
alert('1');
}

alert(show());
var show = function show()
{
alert('1');
}

报错:TypeError: undefined is not a function
3 return 后面的值不会预解析

function test(){

aaa();

return function aaa(){
   alert(1);
   }
}
test();

报错: ReferenceError: aaa is not defined
4 return后面的代码会预解析

function show(){

alert(a);

return 12;

var a = 12;
}
show();

输出:undefined
5 变量不会重复定义

<script>

var a = 12;
var a;

alert(a);


</script>

输出:12


6 封闭空间的函数不会预解析

 

(function show(){
alert(1);
})();


alert(show);

输出:1;

报错:ReferenceError: show is not defined

 

转载于:https://www.cnblogs.com/zhgj/p/4527540.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值