推荐关注
Meteor
JSLint - a JavaScript code quality tool
jsFiddle
D3.js
WebStorm
推荐书目
JavaScript 权威指南第 5 版
Closure: The Definitive Guide
xxxpara

不使用全局变量如何定义一个 count()每次调用输出第几次调用?

  •  
  •   xxxpara · Aug 17, 2015 · 3618 views
    This topic created in 3931 days ago, the information mentioned may be changed or developed.

    一道面试题,这个要怎么做?

    10 replies    2015-08-18 15:08:07 +08:00
    ChefIsAwesome
        1
    ChefIsAwesome  
       Aug 17, 2015 via Android
    闭包。写个会返回另外一个函数的函数就完事了
    aivier
        2
    aivier  
       Aug 17, 2015
    如果没有 Cookie 和 LocalStorage ,也没有 HTML ,还不能和服务器通讯

    ....我想不出来
    est
        3
    est  
       Aug 17, 2015
    函数也算全局变量?
    magicdawn
        4
    magicdawn  
       Aug 17, 2015
    function count (){
    console.log (++count.count );
    }

    count.count = 0;

    函数也是可以带属性的,闭包就不说了
    Gonster
        5
    Gonster  
       Aug 17, 2015 via iPhone
    var count = (function (){
    var i = 0;
    return function (){console.log (++i )}
    })();
    yangg
        6
    yangg  
       Aug 17, 2015
    console.count ();
    ChefIsAwesome
        7
    ChefIsAwesome  
       Aug 17, 2015 via Android
    稍微扩展一下。 jQuery 的$是什么,$.ajax 是什么,$.fn 又是什么。
    js 基本原理就这些东西了
    zhuangzhuang1988
        8
    zhuangzhuang1988  
       Aug 18, 2015
    简单,定义类啊
    an168bang521
        9
    an168bang521  
       Aug 18, 2015
    哥们,这题应该是考查对闭包内的变量控制的;
    可以下面这么写的,
    <script>
    function test (){
    var i=1;
    return function (){
    console.log ("这是您第 "+(i++)+" 次调用 count ()")
    };
    }
    count=test ();
    count ();
    count ();
    count ();
    count ();
    count ();
    count ();
    </script>
    这个在写 JS 时候很常用的;
    还有 4 楼说的添加自定义属性也经常用的,尤其的做定时器 /动画的时候;
    an168bang521
        10
    an168bang521  
       Aug 18, 2015
    闭包和给函数添加自定义属性都可以;
    但是给函数添加自定义属性,在性能上会更好;
    因为这里用闭包实现的话。产生的作用域不销毁;
    性能不如下面这种添加自定义属性的好
    function count2 (){
    console.log ("这是您第 "+(++count2.count )+" 次调用 count2 ()");
    }
    count2.count = 0;
    count2 ();
    count2 ();
    count2 ();
    count2 ();
    count2 ();
    count2 ();
    这种实现方法比闭包,在性能上好些;
    About   ·   Help   ·   Advertise   ·   Blog   ·   API   ·   FAQ   ·   Solana   ·   2945 Online   Highest 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 85ms · UTC 08:03 · PVG 16:03 · LAX 01:03 · JFK 04:03
    ♥ Do have faith in what you're doing.