aimingoo的专栏

.F{color:red}aimingoo

用户操作
[即时聊天] [发私信] [加为好友]
周爱民ID:aimingoo
410978次访问,排名122好友96人,关注者133
aimingoo的文章
原创 122 篇
翻译 0 篇
转载 0 篇
评论 708 篇
aimingoo的公告
新书出版:
china-pub在线购买
相关评论和文章

其它:
 相关评论和文章
 相关评论和文章
最近评论
wls860801:第一次看您的文章,有趣~
sz_haitao:【“什么时候面向对象死掉了,UML就死掉了”】
感觉好像是有些自负的说法(不知道实际交谈时的情景是不是这样)
uml与oo是一一对应的,所以oo死了(海枯石烂),uml才没市场!

而其实呢,uml与oo是一一对应的也许没有问题,但是从易用性、正向逆向转换生成的稳定性而言,uml被抛弃而oo仍生存是非常有可能的
cloudgamer:这篇真的很深入啊
佩服
sherryxuelian:读了《大道至简》,感觉真的收益匪浅。我对这本书的评价是:作者真的是一个善于深刻思考的人,这本书透过繁杂的技术神秘面纱,引领读者来到一个简单和纯净的本源之所,在这里,我看到我曾迷信着的,在纷乱中困惑着的,竟是如此的真实,合理和亲切。再次感谢作者提出对《移山之道》的建议,正好我也买了这本书,呵呵,其实还真是因为《大道至简》才买的,刚开始看书名还以为是《大道至简》的仿照版,(还在想微软这么资深的员……
jackhatedance:这个标题使我想到了martin fowler的blog,他说的是更直接:UML无用。作为敏捷的先锋,他认为MDA,UML都是没用的,DSL才是正道。他说敏捷团队基本不用UML。我想是因为他到了更高的境界,UML图已经可以在他的脑袋里画了。

链接如下:
http://martinfowler.com/bliki/ModelDrivenSoftwareDevelo……
文章分类
收藏
    相册
    旅游
    我、joy与朋友们
    其它
    Hello World!
    ZDNet China软件技术专区
    我的链接
    aimingoo's 网上空地
    我的Delphi项目资源
    麦秸的垛
    我的朋友们
    kiki-玩java的国际游人
    Margaret
    叶卡-Online
    左左-网行者
    老孟-孟岩的孟
    存档
    订阅我的博客
    XML聚合  FeedSky

    原创 JavaScript语言精髓与编程实践 - 勘误收藏

    新一篇: 朋友们,我的D2之行 | 旧一篇: 再会英雄

      
    1. 字词上的错误(24处)
    ==============
    代序,页1,倒数第五行
    ---------
    然而一如我现在所见到,
     
    改为
    然而一如我现在所见到
     

    P22,表1-2,(含表头)第三行、第二列
    ---------
    也被称为Cliet-Side JavaScript
     
    改为
    也被称为Client-Side JavaScript
     
     
     
    P30,表2-2,(含表头)第三行、第三列
    ---------
    一些函数/方法的回值是数值
     
    改为
    一些函数/方法的回值是数值
     
     

    P372.2.3.3节最末处的示例代码
    ---------
    (function foo()
      // ...
    });
     
    改为
    (function foo(){
      // ...
    });
     
     

    P42,正文中部,引用框内
    ---------
    因此有关它的细节请参考2.5 面向对象编程的语法概要
     
    改为
    因此有关它的细节请参考5.7 类型转换
     
     
     
    P53,中间引用框之上的一行
    ---------
    ……
    使用“ identifier: statement”语句开始一个标签声明。
     
    改为
    ……
    使用“ identifier: statement”语法开始一个标签声明。
     
     

    P101,最后一个代码示例块
    ---------
    arr_properties = [
      ['pop'], 0
    ];
     
    改为
    array_properties = [
      ['pop'], 1
    ];
     
     

    P147,脚注22第二行
    ---------
    由于delete运算级高于……
     
    改为
    由于delete运算符优先级高于……
     
     

    P157,(除代码块之外的正文)第三段第二行
    ---------
    我们在实例不能访问ob.proto的情况下,……
     
    改为
    我们在实例不能访问obj.proto的情况下,……
     
     

    P157,(除代码块之外的正文)第三段第三行
    ---------
    ……
    可以补完对3-11中的构造器原型,……
     
    改为
    ……
    可以补全3-11中的构造器原型,……
     
     

    P170,倒数第二段第二行
    ---------
    也可以在处理句柄中使用throwe来重新触发异常。
     
    改为
    也可以在处理句柄中使用throw e来重新触发异常。
     
     

    P189,第三段第二行
    ---------
    这个特性就是通过接口(interface)向显露系统,以及……
     
    改为
    这个特性就是通过接口(interface)向显露系统,以及……
     
     

    P209,第一段第一行
    ---------
    整个编程的模式被简化了函数(function)与其参数(arguments)的运算,……
     
    改为
    整个编程的模式被简化了函数(function)与其参数(arguments)的运算,……
     
     

    P247,脚注第二行
    ---------
    例如“obj.eval('value = 100')”;将在obj的对象闭包中执行代码。
     
    改为
    例如“obj.eval('value = 100');”将在obj的对象闭包中执行代码。
     
     

    P255,最末一段,倒数第三行
    ---------
    原始代码中的,以及当前(装载时的)环境下的符号系统。事实上一些在程度中嵌入
     
    改为
    原始代码中的以及当前(装载时的)环境下的符号系统。事实上一些嵌入程序中
     
     

    P319,第一个代码块,第四行(注释)
    ---------
    即时字节类型(vbByte)
     
    改为
    即是字节类型(vbByte)
     
     

    P325,第二个代码块,示例2中的注释
    ---------
    在(隐式)转换将被忽略
     
    改为
    在(隐式)转换将被忽略
     
     

    P328,第二个代码块(行)
    ---------
    行前的行号,应标为15
     
     

    P343,图6-1下的一段,第一行
    ---------
    ……
    7则对应用”……
     
    改为
    ……
    6.7小节则对应用”……
     
     

    P352,最末一段第二行
    ---------
    然而如果用户想要Qomo充分利用函数式、动态语言以及……
     
    改为
    然而如果用户想要知道Qomo如何充分利用函数式、动态语言以及……
     
     

    P3906.3.3小节中的第一个代码块,第三个函数声明
    ---------
    function f2() {
      return undefined;
    }
     
    改为
    function f3() {
      return undefined;
    }
     
     

    P438,图6-2存在较多的错误
    ---------
    [
    正确图例如下]
     
     

     

     
     
    P491,第一段第二行
    ---------
    (因此若一定要在apply())中使用数组,那么……
     
    改为
    (因此若一定要在apply())中使用,那么……
     
     
     
    2. 文意上的错误(6处)
    ==============
    P3,倒数第五行
    ---------
    中国可能还有2/3IT人在玩一种叫电子公告板(BBS……
     
    改为
    国内IT人中可能还有2/3的触网者在玩一种叫电子公告板(BBS……
     
     

    P8,倒数第四段,最末一句
    ---------
    当时还没有PHP,而ASP也只是刚刚出现,并不成熟。
     
    改为
    当时我还不知道PHP,而ASP也并不那么流行。
     
     

    P29,脚注第二行
    ---------
    Mozilla
    Firefox插件
     
    改为
    Mozilla Firefox
    中的FireBug插件
     
     

    P372.2.3.3节的最末一段,最后一行
    ---------
    下例所示的代码在SpiderMonkey JavaScript的任意位置都不是具名函数……
     
    改为
    下例所示代码中的函数foo()SpiderMonkey JavaScript的表达式中,以及其所在表达
    式之外(的全局或其它函数闭包中)都是不具名的……
      [
    说明]
    SpiderMonkey JavaScript
    中,这个函数的名称在它的函数体内部仍然是有意义的。例
    如下面的代码仍可以通过函数名来访问它:
    (function foo() {
      alert(foo.toString());  //<--
    这里仍可以访问标识符foo
    });
     
     

    P49,第一行
    ---------
    ……对于引用类型数)据来说,则是存放所引用地址的内存(即指向用数据的指针)
     
    改为
    ……对于引用类型数)据来说,则是存放引用地址(指向引用数据的指针)的内存。
     
     

    P90,表2-20
    ---------
    (除表头外)第二行、第四列中,应
     
    添加内容
    数值直接量声明中的符号(正、负或指数)
    (除表头外)第三行、第四列中,参数声明
     
    改为
    形式参数表
    (除表头外)第五行、第四列中,对象成员存取
    移到该行的第三列中。
     
     
     
    3. 标点、文法上可以更好的(12处)
    ==============
    代序,页1,正文第一段第三行
    ---------
    ……
    等都被分在命令式语言范型的畴;函数式语言则是……
     
    改为
    ……
    等都被分在命令式语言范型的畴,函数式语言则是……
      [
    说明]
    该句是两个单句,不必使用号。
     
     

    代序,页1,正文第一段第五行
    ---------
    当然从语言的实现方式来看,……
     
    改为
    当然,从语言的实现方式来看,……
      [
    说明]
    这时用个号,停顿更为自然。
     
     

    前言末页,倒数第三段第二行
    ---------
    然后试读一二章节,可以先选读一些在你的知识库中看来很新鲜的,以及一些你
    自认为已经非常了解的内容。
     
    改为
    然后试读一些章节。你可以先选读一些在你的知识库中看来很新鲜的,以及一些你
    原本已经非常了解的内容,……
      [
    说明]
    前面的一二章节可能存在歧义,被读者误解为确指第一、二章。其它修改
    以及语句上更为通顺。
     
     

    P16,倒数第四行
    ---------
    它们不得不面对这种新的技术带来的巨大的网络机会。
     
    改为
    它们不得不面对这种新技术给互联网带来的巨大的机会。
      [
    说明]
    更为通顺的表达。
     
     

    P302.2.1.1小节,第一段
    ---------
    我们称这些类型为基本类型、基础类型或……
     
    改为
    我们称JavaScript识别近六种类型为基本类型、基础类型或……
      [
    说明]
    此处是新的小节,不宜承前省略。
     
     

    P42,正文第三段最末一句
    ---------
    例如在下面的表达式中,逻辑否(!)运算符强制运算元为aVar,因此
    无论aVar是其他何种类型,都将被转换为bool值参与运算:
     
    改为
    例如在下面的表达式中,无论aVar是其它何种类型,都将被逻辑否(!)
    运算符转换为bool值参与运算:
      [
    说明]
    更为通顺的表达。
     
     

    P45,倒数第三段,第一行
    ---------
    ……
    我们成功地否定了一个惯例性的说法:
     
    改为
    ……
    我们成功地否定了一个习惯性的说法:
      [
    说明]
    更适当的用词。
     
     

    P48,倒数第二段,最末两行
    ---------
    ……
    因此存储单元是不可写的。表达式运算过程中,赋值的效果(修改
    存储单元中的值)无法完成,所以提示出错。
     
    改为
    ……
    其存储单元是不可写的,因此在表达式运算过程中,将因赋值的效
    果(修改存储单元中的值)无法完成,而提示出错。
      [
    说明]
    更为通顺的表达。
     
     

    P57,文中第三段分段有一些不当
    ---------
    该段应在倒数第二行显式声明时可以为变量赋一个初值……”之前结束。
    截出的文字部分应该与下一行合并在一段中。新段落成如下形式:
      显式声明时可以…………。而隐式声明与此不同的是…………。换而
    言之……,然后完成赋值运算。
     
     

    P255,正文第二段最末一行
    ---------
    (例如某些Unix Shell比)DOS Shell要强大得多。
     
    改为
    (例如某些Unix Shell比)DOS批处理要强大得多。
      [
    说明]
    这里是强调两种称谓的差异,因此这里用“DOS批处理更恰当。
     
     

    P350,脚注第一行
    ---------
    ……
    在卡通片里,或者我们这样用程序来构建的原始动物世界中能看到。
     
    改为
    ……
    在卡通片里,或者我们这样用程序来构建的原始的动物世界中能看到。
      [
    说明]
    这里应强调这个动物世界是原始的、简陋的,避免让读者认为是原始动物的世界。
     
     

    P455,脚注最后一行
    ---------
    (以实现在beginPaint()之后)缓存,至endPaint()时一次渲染的绘制风格。
     
    改为
    (以实现在beginPaint()之后)缓存、至endPaint()时一次渲染的绘制风格。
      [
    说明]
    这里宜使用顿号表明语义上的连贯。
     
     
     
    4. 更多的补充说明(4处)
    ==============
    P56,最末一段,第一行
    ---------
    最后要强调一点:eval()函数总是执行语句。
      [
    补充]
    事实上,使用eval()也是获得语句结果值,并使之可以参与运算的唯一方法。
     
     
    P57,倒数第二段
    ---------
    因为一方面有显式声明时所赋予的初值……
      [
    补充]
    事实上,所谓显式声明时所赋予的初值只是一个存有误解的、语义上的
    表面现象——从其它语言的经验来看,“var i = 100;”这样的语句是试图
    声明一个有初值变量。然而事实上,严格地说,JavaScript并没有语法
    期的变量初值的概念,在语法分析期,这里只出现了一个变量声明
    赋值符号(=是不被理解的。而到了代码执行期,这个赋值符号才被
    解析,并完成赋值的行为。但有趣的是,JavaScript的确为“var i = 100;”
    这样的语句做了一些手脚,这与标识符优先系统有关,请参见“4.6.7 闭包
    中的标识符(变量)特例中的示例4~6。
     
     

    P63,第一段,示例
    ---------
      [
    补充]
    需要强调一下,该示例的本质其实是在函数直接量之前加上了一个运算符(void)。
    由于这个运算符的存在,使得JavaScript可以将该匿名函数解释为运算元——
    非一个直接的、全局的函数声明语句——并参与运算。因此,事实上我们也可以
    使用下面的代码来达到完全相同的效果:
    //
    赋值运算符“=”——或其它运算符,也可以强制后面函数直接量为运算元
    x = function() {
      // ...
    }(1,2);
     
     

    P71,图2-15之后的一段
    ---------
    ……
    因此事实上该提示信息所指的是“un-labeled break”……
      [
    补充]
    对于脚本引擎的提示信息来说,这里存在一个翻译上的问题。因为所谓循环之外
    不能有‘break’”,这个break其实成了泛指所有形式的break子句。然而,我们前
    文中的分析表明:在这里可以使用标签化的breaklabeled break,不能使
    用的是仅是独立的、不确切指向某个标签的语句“break;”——亦即是(unlabeled
    break
    )。这种细微的差异在语句陈述上极其不便,望读者能仔细分辨。
     
     

    5.
    印刷问题、排版错误(8处)
    ==============

    破折号丢失
    P116
    184185189283373
    正文或代码缩进错误
    P152
    220 
     
    P445,第一段代码下的第一行正文
    ---------
    切面对可能目标系统的输入输出产生影响,
     
    改为
    切面可能对目标系统的输入输出产生影响,

    发表于 @ 2008年04月23日 13:36:29|评论(loading...)|编辑

    新一篇: 朋友们,我的D2之行 | 旧一篇: 再会英雄

    评论

    #aculamatata 发表于2008-04-25 16:02:26  IP: 221.235.59.*
    我是一个刚毕业的新手 这些天都在细读阁下的大作 也发现了 一些小的印刷错误 比如:P150中间的代码段for似乎缺少了结尾的大括号 }
    很感谢 周先生的书长了不少见识 谢谢!
    #turingbook 发表于2008-04-28 02:06:04  IP: 123.114.78.*
    好像编辑不太过关啊。应该向yeka同学她们提出批评。呵呵。
    #cuipengfei1 发表于2008-05-01 20:56:11  IP: 125.70.254.*
    在卓越买了,等待运输中......
    #aimingoo 发表于2008-05-01 22:39:11  IP: 222.131.62.*
    aculamatata , 非常感谢,我已经将这个错误加入勘误。谢谢。
    #emkiao 发表于2008-05-20 12:36:55  IP: 124.114.88.*
    《JavaScript语言精髓与编程实践》中说 safari不支持 arguments.callee.caller
    也就是 func.caller

    其实是opera不支持 safari倒是支持

    你的这本书写的非常好,可以看的出,内容都是你开发框架的经验总结
    #aimingoo 发表于2008-05-20 13:56:37  IP: 123.112.18.*
    emkiao, 这个问题在P222下的脚注20中是解释过的.
    #aimingoo 发表于2008-05-20 13:57:29  IP: 123.112.18.*
    又, 非常感谢你的关注和评价. 哈哈...
    #s_liangchao1s 发表于2008-05-20 17:24:58  IP: 116.3.8.*
    大师,你能不能开个这本书的论坛阿 太多不懂得了
    #zhouruitao 发表于2008-05-22 15:11:11  IP: 125.33.198.*
    一出我就买了,在中关村图书大厦。迫不及待的看了。这本书是js领域讲的最深的了。很不错的。
    #cuipengfei1 发表于2008-05-23 17:38:34  IP: 125.70.254.*
    卓越终于寄到了......
    #emkiao 发表于2008-05-24 15:18:00  IP: 219.144.176.*
    我发过之后才看到 有脚注,不好意思哈

    到新华书店不打算买书的,只是略逛逛,看到你这本书非常棒,终于破了几年未买过书的纪录

    你那个框架我觉得还得精简,也许你弄delphi久了,对象的思想根深蒂固了,我感觉浏览器端有点吃不消那么庞大的结构
    #zhouruitao 发表于2008-05-26 12:51:45  IP: 125.33.194.*
    呵呵,和Ext差不多,不大。
    #cuipengfei1 发表于2008-06-06 01:14:55  IP: 125.70.254.*
    周老师您好, JavaScript语言精髓与编程实践我看了一点,现在有一点疑惑。
    在我一个初学者看来,您在书中很多地方似乎都是在穷究根源,这样做到底是因为对深层次的继续学习有益呢,还是仅仅是考据?
    #aimingoo 发表于2008-06-11 15:03:14  IP: 221.221.240.*
    cuipengfei1 ,

    有些地方的确是为了考据,例如js的历史,以及动态语言的历史。因为毕竟是写书,我得写正确才成。但有些则不是,例如语言特性的发展,以及发展过程中的一些相关分支。还有其它一些穷究根源的东西,更多的是为了找到一个完整、成功的语言是如何发展到现在的。这有益于我们的思考。

    例如,很多人以为js天生是一门动态函数式语言,但事实上不是。真相是,基于原型的对象系统是在js 1.1以后提出的,而类型系统和重要的函数式语言特性要等到v1.2之后才被加入。所以js成为一门成熟的语言是有它自己的过程的,这其中的取舍,其实就是大师的思想历程。
    #liubowen082 发表于2008-07-10 09:34:14  IP: 222.171.147.*
    P228 第二个代码块,我的调试结果为false,

    alert(f3===f4) //false

    alert(f3.toString==f4.toString) //true
    #liubowen082 发表于2008-07-10 09:34:48  IP: 222.171.147.*
    alert(f3.toString()==f4.toString()) //true
    #mouyong 发表于2008-07-10 11:26:05  IP: 222.172.155.*
    嗯,加您为好友,希望您不嫌弃。
    最近正在看您的《JavaScript》,第40页,关于数组的一段论述:

    ...在将数组视为普通对象并用for...in语句列举时,可以列举到那些数值的索引下标。

    这句话似会引起人的歧义:可以列举到数值的索引下标,那么“名-值”是不是不能列举呢?

    我实际试验了一下,在firefox3.0和IE7.0中均能列举到索引下标和“名”
    实验代码如下:
    var a=new Array();
    a[0]=10;
    a[1]=20;
    a["a"]=30;

    for(var p in a){
    alert(p);//两个浏览器均显示0,1,a
    }
    #mouyong 发表于2008-07-10 15:15:33  IP: 222.172.155.*
    现在看到47页,突然想到一个问题:
    JavaScript在进行字符串比较的时候(两个运算元均为字符串),字符串序列是如何检测的呢?是不是也是按字符的ASCII编码依次比较的?

    我写了以下代码
    alert('a'>'A');
    结果是true
    前面是第一个问题,希望能得到周老师的指点。

    然后我又写了一段代码
    alert(new String('a')>new String('A'))
    根据周老师所说,上面两个应该属于引用类型吧?那应该返回一个false,可是结果是:firefox 3.0与IE7都令人失望的给了我true的结果。

    有点想不通呀。。。。。(难道和valueOf()有关?)
    仍然希望得到周老师的指点。
    #mouyong 发表于2008-07-12 21:55:37  IP: 221.213.16.*
    55页,2.4.1.1节:
    void 1+2+3的运算,应该是先算void 1,得到undefined,之后再算undefined+2+3,得到NaN。

    所以,应该是先忽略返回值,再两次求和,而不是周老师书上所说的,先两次求和,后忽略返回值。
    周老师在前面的行文中曾经强调过运算符优先级,到这里似乎又忘记了,看来习惯的力量真的很大呀,呵呵。
    #aimingoo 发表于2008-07-14 17:46:43  IP: 125.33.151.*
    to liubowen082 ,

    你所说的P228的第二段代码是没有错的。你需要留意下面的代码:
    =====
    var aFunc3 = function() {
    ...
    }() <=== 注意这里有一对括号
    =====

    当你的代码漏掉这对括号时,显示就是false了。而这里,也是闭包/函数实例概念中非常关键之处。
    #aimingoo 发表于2008-07-14 18:02:55  IP: 125.33.151.*
    to mouyong,

    第一个问题,数组兼有索引数组、关联数组和对象三者的特性。所以它能用for..in列举到其它的“名-值”是正常的,能同时列举到下标也是正常的。如果前者需要强调,那就还得强调函数也能被列举、正则也能被列举,以及字符串也能被列举等等。事实上所有的JS对象都具有“对象特性”,所以这部分信息是自然应有的。如何理解“一切都是对象”这个问题,可以参考P176,“3.4.5 JavaScript中的对象”。

    关于字符串比较的问题,'a'的ASCII序列是0x61,而'A'是0x41,当然'a'>'A'。第二个例子中你使用了new String(),正如你所说,这个涉及到valueOf(),所以最终仍然是值类型在比较。答案还是true。这部分内容请参考P327, “5.7.5 从引用到值:深入探究valueOf()方法”。

    最后一个问题,你提到55页中的这个错误,这的确是我行文时的一个错误,我会在第二次勘误列表中写出来。哈哈,给您带来了困扰,不好意思。:)
    #l22141 发表于2008-07-15 23:25:03  IP: 58.240.157.*
    周老师,近来一直在看你的这本书,受益颇多。对书中一个问题想请教您:
    书中5.2.2节(P265)例子代码:
    var func = eval('(function(){})');
    alert(typeof func);

    在JSCRIPT和SPIDERMONKEY中这段代码为什么前者会输出undefined,后者输出function? 书中脚注19解释是因为这两个引擎对“函数声明的语句含义”的理解不同所导致。
    我看了2.2.3.3 函数直接量声明和5.4.2.1语法声明和语句含义不一致问题,但是仍然不明白在JSCRIPT中为什么会输出undefined? 按道理,匿名函数直接量应该会返回一个值啊。能否具体解释一下函数声明的语句含义在这两种引擎中是如何理解的?
    另外,脚注19中说:SPIDERMONKEY对具名函数值返回undefined.
    但我无论在IE或者firefox(2.0.0.15)中执行:
    eval('function func() { }');
    alert(typeof func);
    都返回的是function啊。
    如果修改成:
    var func = eval('function func() { }');
    alert(typeof func);
    此时在两种引擎中都返回undefined.
    我理解前一个例子输出function原因是两种引擎在语法解析阶段都生成了func这个标识符。所以在执行时func标识符类型就是function.(那么你所说的在SpiderMonkey中可以用eval()返回一个匿名函数,而对具名函数却只能返回undefined是什么含义?)
    后一个例子结果我就想不明白了,按理这个具名函数直接量的返回值应该不是undefined啊,是不是eval有什么特殊限制?

    最后,还想确认书中另外一处问题:
    5.4.4 宿主对重写的限制(P293),第二个例子,
    注释如下:
    // 这里由于window.setTimeout()未被重写,因此与(当前的)setTimeout已经不同了

    这个注释是不是写反了,从例子看是不是应该是window.setTimeout被重写了,而不是未被重写?
    #aimingoo 发表于2008-07-22 20:40:32  IP: 221.220.187.*
    to l22141,

    最后这个问题,这个注释是错了。应该是:
    // 这里由于成员window.setTimeout被重写, 因此与(当前的)setTimeout已经不同了

    其它的问题,我专门发了一篇文章来讨论:
    http://blog.csdn.net/aimingoo/archive/2008/07/22/2692512.aspx

    谢谢你的关注。
    #lee576 发表于2008-08-05 15:21:45  IP: 58.49.52.*
    汗,我七月份买的书,怎么没有发现这些错误,难道是再次印刷的时候修正了?
    #lee576 发表于2008-08-05 15:21:53  IP: 58.49.52.*
    汗,我七月份买的书,怎么没有发现这些错误,难道是再次印刷的时候修正了?
    #kelicb 发表于2008-10-01 20:17:03  IP: 219.133.122.*
    for(var i=0;i<10;i++){}
    alert(i);

    请问您在书中第140页说,输出是11,但是ie、mozilla和chrome都是输出10,请问是什么引起的?
    #aimingoo 发表于2008-10-01 22:14:27  IP: 222.131.61.*
    抱歉,这是一个笔误。应该是输出10。因为当i==10时,条件已经不满足"i<10"了。

    谢谢你指出这个错误。
    发表评论  


    当前用户设置只有注册用户才能发表评论。如果你没有登录,请点击登录
    Csdn Blog version 3.1a
    Copyright © aimingoo