aimingoo的专栏

.F{color:red}aimingoo

周爱民ID:aimingoo
382363次访问,排名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可能是这样处理的:任何函数结构一律……
文章分类
收藏
    相册
    旅游
    我、joy与朋友们
    其它
    Hello World!
    ZDNet China软件技术专区
    我的链接
    aimingoo's 网上空地
    我的Delphi项目资源
    麦秸的垛
    我的朋友们
    kiki-玩java的国际游人
    Margaret
    叶卡-Online
    左左-网行者
    老孟-孟岩的孟
    存档
    订阅我的博客
    XML聚合  FeedSky

    我和joy。2002.10.04在有小布达拉宫之称的承德“普陀宗乘之庙”。

    我和joy。2002.10.04在有小布达拉宫之称的承德“普陀宗乘之庙”。

    返回到相册 | 原始照片

    Csdn Blog version 3.1a
    Copyright © aimingoo