js的预解析
2014-03-26 19:15
363 查看
1,js是顺序执行的,下面这个大家肯定没有异议
和函数声明一样,变量的声明也会在一开始就被放入内存中了,但是并没有赋值,所以在它赋值之前,它的值就是undefined;
3,变量和函数重名,看如下代码
这个就说明了,重名时,函数名优先级高于变量名
4,js的预解析是在程序进入一个新的环境时,把该环境里的变量或函数预解析到它们能调用的环境中。即每一次预解析的单位是一个执行环境。代码如下
此外,如果预解析不会跨<script>去解析,如下:
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>
相关文章推荐
- js中数组排序
- 深入理解JavaScript系列(8):S.O.L.I.D五大原则之里氏替换原则LSP
- jsp页面无法解析EL表达式问题
- js笔试题一套(未完待续)
- 网易邮箱前端Javascript编码规范:基础规范
- js的全局变量和局部变量
- 如何用javascript写一个贪吃蛇
- JS字符串拼接的问题
- 关于js的DOM
- JavaScript中的事件传播(DOM2标准事件模型)
- JavaScript中的事件取消
- 在js中取出对象中的值
- js禁止页面刷新
- JS数组方法汇总 array数组元素的添加和删除
- 原生js的AJAX
- SuggestFrameWork js代码结构
- 页面禁用返回功能
- jsp表达式语言 总结
- 解析json
- 不同浏览器之间的javascript和css兼容性问题