您的位置:首页 > Web前端 > JavaScript

js的预解析

2014-03-26 19:15 363 查看
1,js是顺序执行的,下面这个大家肯定没有异议


test();//哈哈
functiontest(){
alert("哈哈");

}


但是在C语言中,这样就不行了,C语言要求函数必须先声明后调用,那是什么原因让js有如此能力先调用而后声明了?ok,这说明js肯定是在调用函数之前就将函数放入内存中了,这种简单的机制就是我们今天要说的---js预解析

2,变量的预解析,看如下代码


alert(a);//undefined

vara="test";


和函数声明一样,变量的声明也会在一开始就被放入内存中了,但是并没有赋值,所以在它赋值之前,它的值就是undefined;

3,变量和函数重名,看如下代码

alert(a);//function(){return"function"}
vara="var";

functiona(){return"function"}

alert(a);//var



这个就说明了,重名时,函数名优先级高于变量名

4,js的预解析是在程序进入一个新的环境时,把该环境里的变量或函数预解析到它们能调用的环境中。即每一次预解析的单位是一个执行环境。代码如下

functiona(){
varb="function"
}
alert(b);//报错bisnotdefined


此外,如果预解析不会跨<script>去解析,如下:

<scripttype="text/javascript">
alert(b);//报错
</script>

<scripttype="text/javascript">
varb=1;
</script>



                                            
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: