JavaScript会将所有变量和函数声明移动到它的感化域的最前面,这就是所谓的变量晋升(Hoisting)。也就是说,无论你在什么处所声明变量和函数,说冥器都邑将它们移动到感化域的最前面。是以我们可以先应用变量和函数,而后声明它们。
然则,仅仅是变量声明被晋升了,而变量赋值不会被晋升。如不雅你不明白这一点,有时则会掉足:
- console.log(y); // 输出undefined
- y = 2; // 初始化y
膳绫擎的代码等价于下面的代码:
- var y; // 声明y
- console.log(y); // 输出undefined
- y = 2; // 初始化y
7. 柯里化
柯里化,即Currying,可所以函数变得加倍灵活。我们可以一次性传入多个参数调用它;也可以只传入一部分参数来调用它,让它返回一个函数去处理剩下的参数。
代铝闼楝我们可以一次性传入2个1作为参数add(1)(1),也可以传入1个参数之后获取add1与add10函数,如许应用起来异常灵活。
8. apply, call与bind办法
- function addMethod(object, name, f)
- {
- var old = object[name];
- object[name] = function()
- {
- // f.length为函数定义时的参数个数
- // arguments.length为函数调用时的参数个数
- if (f.length === arguments.length)
- {
- return f.apply(this, arguments);
- }
- else if (typeof old === "function")
- {
- return old.apply(this, arguments);
- }
- };
- }
- // 不传参数时,返回所有name
- function find0()
- {
- return this.names;
- }
- // 传一个参数时,返回firstName匹配的name
- function find1(firstName)
- {
- var result = [];
- for (var i = 0; i < this.names.length; i++)
推荐阅读
笔者github上有一个简略单纯版的HashTable的实现:HashTable实现 在PHP内毫闼楝个一一个很重要的数据构培养是HashTable。我们常用的数组,在内核中就是用HashTable来实现。那么,PHP的Hash>>>详细阅读
本文标题:10个JavaScript难点
地址:http://www.17bianji.com/lsqh/36438.html
1/2 1

网友点评
精彩导读
科技快报
品牌展示