aimingoo的专栏
.F{color:red}aimingoo
登录
注册
全站
当前博客
空间
博客
好友
相册
留言
周爱民
ID:aimingoo
共
382364
次访问,排名
129
好友
1
人,关注者
57
人
aimingoo的文章
原创 116 篇
翻译 0 篇
转载 0 篇
评论 663 篇
aimingoo的公告
新书出版:
china-pub在线购买
相关评论和文章
其它:
相关评论和文章
相关评论和文章
最近评论
hax:
可能我表达有问题。我重新总结了一篇:http://hax.javaeye.com/blog/230182
函数声明虽然是语法解析期处理,但是函数对象的生成却是在运行时的。即使是一个函数声明,函数对象也是在进入execution context时产生的,与函数表达式的差别是,它仅在execution context的一开始时生成一次。性能测试当然无法验证非运行时的问题,但……
forxm1972:
根据ECMA-262 3rd/13.1.1 Equated Grammar Productions之第1点, 此文第1个例子, firefox的处理似乎是对的, 而ie的处理是错的, 与全局优化没有关系
aimingoo:
很努力地了解你的想法。但最后一个,你的性能测试并不能表明这个函数声明被抛弃掉。因为函数声明是语法解析期处理的,正好不占用执行时间。
hax:
进一步,“那么到底为什么第一种情况下,JScript就一定是理解为“声明语句”而不是表达式呢?”
其实第一种情况(“(function (){})”)既不是声明语句也不是表达式(严格的说是既没有函数声明的效果,也没有函数表达式的效果),实际上这里什么也没执行,这个代码被JScript抛弃掉了(或者说这里是一个被优化掉了的函数表达式)。这一点可以通过类似我上面的性能测试证……
hax:
从另一个方面说,这也解释了你对于何时才是声明语句的疑惑。因为对于function的解析JScript其实并不是遵循标准来的,所以不能按照标准对于函数声明/函数表达式的划分来解释JScript的问题。
JScript现在的表现实际上是最初不符合标准的设计加上JScript 5.5所打的patch的结合体。
按照我的猜测,最初的JScript可能是这样处理的:任何函数结构一律……
文章分类
《Delphi源代码分析》
(RSS)
《大道至简》
(RSS)
Qomo OpenProject
(RSS)
动态函数式语言
(RSS)
对话
(RSS)
关于我
(RSS)
架构与设计
(RSS)
其它项目
(RSS)
随笔
(RSS)
收藏
相册
旅游
我、joy与朋友们
其它
Hello World!
ZDNet China软件技术专区
我的链接
aimingoo's 网上空地
我的Delphi项目资源
麦秸的垛
我的朋友们
kiki-玩java的国际游人
Margaret
叶卡-Online
左左-网行者
老孟-孟岩的孟
存档
2008年08月(2)
2008年07月(7)
2008年06月(9)
2008年05月(2)
2008年04月(2)
2008年03月(2)
2007年12月(5)
2007年11月(1)
2007年10月(2)
2007年09月(3)
2007年08月(3)
2007年07月(2)
2007年06月(1)
2007年05月(2)
2007年04月(6)
2007年03月(5)
2007年02月(6)
2007年01月(1)
2006年12月(2)
2006年11月(2)
2006年10月(2)
2006年09月(4)
2006年07月(1)
2006年04月(4)
2006年03月(7)
2006年02月(5)
2006年01月(13)
2005年12月(11)
2005年06月(4)
订阅我的博客
05年,01月17日桐柏山太白顶途中休息的joy
返回到相册
|
原始照片