jshyliang 2010-12-26 09:23
浏览 181
已采纳

一段JS 代码 好像是关于资源回收的,不懂请教达人,代码贴出

(function () {

var i = 0;

return function() {

window.alert(i++);

};

})()()();
这样一段代码 ,我 开始看代码时候以为会输出 1 ,但是 实际上 弹出窗口却是输出0 不知道为什么 ,

还有 ,这个代码最后 有三个空括号 不知道这三个空括号 分别是干啥用的, 求解答 谢谢

  • 写回答

3条回答 默认 最新

  • iteye_9040 2010-12-27 10:43
    关注

    可以拆分成这样来理解
    [code="java"]

    var fun1 = function(i){
    window.alert(i++);
    }

    var fun2 = function(){
    var i = 0;
    fun1(i);
    }
    [/code]

    第1个括号是声明匿名函数的方式。
    第2个括号是运行该函数
    第3个的确可能是手误,多余的。

    至于打印的是0不是1,是因为i++的运算顺序,i++,是i先用于运算,然后自增。++i是先自增,然后用于运算

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(2条)

报告相同问题?

悬赏问题

  • ¥50 永磁型步进电机PID算法
  • ¥15 sqlite 附加(attach database)加密数据库时,返回26是什么原因呢?
  • ¥88 找成都本地经验丰富懂小程序开发的技术大咖
  • ¥15 如何处理复杂数据表格的除法运算
  • ¥15 如何用stc8h1k08的片子做485数据透传的功能?(关键词-串口)
  • ¥15 有兄弟姐妹会用word插图功能制作类似citespace的图片吗?
  • ¥200 uniapp长期运行卡死问题解决
  • ¥15 latex怎么处理论文引理引用参考文献
  • ¥15 请教:如何用postman调用本地虚拟机区块链接上的合约?
  • ¥15 为什么使用javacv转封装rtsp为rtmp时出现如下问题:[h264 @ 000000004faf7500]no frame?