作家
登录

10个JavaScript难点

作者: 来源: 2017-07-27 16:55:03 阅读 我要评论

  • console.log(add(1)(1)); // 输出2 
  •  
  • var add1 = add(1); 
  • console.log(add1(1)); // 输出2 
  •  
  • var add10 = add(10); 
  • console.log(add10(1)); // 输出11  
  • JavaScript会将所有变量和函数声明移动到它的感化域的最前面,这就是所谓的变量晋升(Hoisting)。也就是说,无论你在什么处所声明变量和函数,说冥器都邑将它们移动到感化域的最前面。是以我们可以先应用变量和函数,而后声明它们。

    然则,仅仅是变量声明被晋升了,而变量赋值不会被晋升。如不雅你不明白这一点,有时则会掉足:

    1. console.log(y);  // 输出undefined 
    2.  
    3. y = 2; // 初始化y  

    膳绫擎的代码等价于下面的代码:

    1. var y;  // 声明y 
    2.  
    3. console.log(y);  // 输出undefined 
    4.  
    5. y = 2; // 初始化y  

    7. 柯里化

    柯里化,即Currying,可所以函数变得加倍灵活。我们可以一次性传入多个参数调用它;也可以只传入一部分参数来调用它,让它返回一个函数去处理剩下的参数。

    代铝闼楝我们可以一次性传入2个1作为参数add(1)(1),也可以传入1个参数之后获取add1与add10函数,如许应用起来异常灵活。

    8. apply, call与bind办法

    1. function addMethod(object, name, f) 
    2.     var old = object[name]; 
    3.     object[name] = function() 
    4.     { 
    5.         // f.length为函数定义时的参数个数 
    6.         // arguments.length为函数调用时的参数个数 
    7.         if (f.length === arguments.length) 
    8.         { 
    9.             return f.apply(this, arguments); 
    10.         } 
    11.         else if (typeof old === "function"
    12.         { 
    13.             return old.apply(this, arguments); 
    14.         } 
    15.     }; 
    16.  
    17.  
    18. // 不传参数时,返回所有name 
    19. function find0() 
    20.     return this.names; 
    21.  
    22.  
    23. // 传一个参数时,返回firstName匹配的name 
    24. function find1(firstName) 
    25.     var result = []; 
    26.     for (var i = 0; i < this.names.length; i++) 

        推荐阅读

        [PHP内核探索]PHP中的哈希表

      笔者github上有一个简略单纯版的HashTable的实现:HashTable实现 在PHP内毫闼楝个一一个很重要的数据构培养是HashTable。我们常用的数组,在内核中就是用HashTable来实现。那么,PHP的Hash>>>详细阅读


      本文标题:10个JavaScript难点

      地址:http://www.17bianji.com/lsqh/36438.html

    关键词: 探索发现

    乐购科技部分新闻及文章转载自互联网,供读者交流和学习,若有涉及作者版权等问题请及时与我们联系,以便更正、删除或按规定办理。感谢所有提供资讯的网站,欢迎各类媒体与乐购科技进行文章共享合作。

    网友点评
    自媒体专栏

    评论

    热度

    精彩导读
    栏目ID=71的表不存在(操作类型=0)