js 激活/代码执行阶段 执行顺序!
2015-12-02 15:24
323 查看
function hello(){ console.log('aaa'); } hello(); function hello(){ console.log('aaasdfasda'); } hello();两次均打印
aaasdfasda
------------------------------
console.log(hello); function hello(){ console.log('aaasdfasda'); } console.log(hello); function hello(){ console.log('aaa'); } console.log(hello);
三次都打印:
function hello(){ console.log('aaa'); }
一开始打印的是创建阶段,同名函数覆盖,所以打印funciton hell..aaa
后两个同样都打印aaa 可见代码执行阶段函数也不是顺序执行赋值
-------------------------------
按我理解 ,js在 激活/代码执行阶段 定义式的函数语句会被提取出来优先执行。函数定义执行完后,才会按顺序执行其他代码
也解释了为什么
(function(){ console.log(bar); var bar = 20;function bar(){ console.log("bar"); } console.log(bar); })()
打印:
function bar(){
console.log("bar");
}
20
在创建阶段(当函数被调用,但是开始执行函数内部代码之前)
阶段 激活对象 里 bar 是funciton bar.... 所以第一个打印的是bar方法
但是代码执行阶段,方法bar在var bar=20之后 按理说是会覆盖bar变量声明 第二个打印的也是方法,但是根据文章一开始的代码实验,应该是无论先后顺序,函数先执行,然后变量var bar =20 覆盖方法 function
bar()....
相关文章推荐
- 实时流式计算Jstorm
- JS中判断浏览器类型
- 122 js 关闭子窗口刷新夫窗口 validate新增规则 新增比较时间规则
- JavaScript使用DeviceOne开发实战(四)仿优酷视频应用
- jsp页面用EL获取URL传的值
- JavaScript-手机中访问页面判断
- js获取当前url地址及参数
- JSP和servlet之间的通信
- 解除网页右键限制和开启网页编辑状态的js代码
- url编码解码-js编码、C#编码
- javascript 中的 delete
- js 不支持此属性或方法
- JavaScript基础——数据类型
- js对象『属性特征』和『对象特征』
- JavaScript使用DeviceOne开发实战(四)仿优酷视频应用
- staxon 实现 json 与xml 之间的转换 支持数组,属性
- JSTL与EL表达式(为空判断)
- js的input框限制输入内容
- 使用java运行javaScript脚本
- 10款强大的JavaScript图表图形插件推荐