From ce297f0c517b65d6c6f7213f212f186a9c373ac2 Mon Sep 17 00:00:00 2001 From: "Sunshine.Wu" Date: Thu, 5 May 2016 02:56:25 +0800 Subject: [PATCH 1/2] fixed a bug & update something MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 修改Function篇幅中代码中的一个小bug,顺便增加了一个写法 --- .../JavaScript_Basics/Function.md | 18 +++++++++++++++++- 1 file changed, 17 insertions(+), 1 deletion(-) diff --git a/chapters/JavaScript_Core/JavaScript_Basics/Function.md b/chapters/JavaScript_Core/JavaScript_Basics/Function.md index 4d875e9..a871ccd 100644 --- a/chapters/JavaScript_Core/JavaScript_Basics/Function.md +++ b/chapters/JavaScript_Core/JavaScript_Basics/Function.md @@ -197,7 +197,7 @@ JavaScript函数对象的内部状态不仅包含着函数的代码逻辑,还 for (i = 0; i < nodes.length; i += 1) { nodes[i].onclick = function (i) { return function(e){ - alert(e); + alert(i); //should not be alert(e); }; }(i); } @@ -206,6 +206,22 @@ JavaScript函数对象的内部状态不仅包含着函数的代码逻辑,还 这里使用一个立即执行函数并传递当前的i的值,返回一个新生成的函数。在这个新生成的函数的闭包中就保存了当前的i的值。 + + + var add_the_handlers = function (nodes) { + var i; + var helper = function (j) { + return function (e) { + alert(j); + }; + }; + for (i = 0; i < nodes.length; i += 1) { + nodes[i].onclick = helper(i); + } + }; + + + ## 函数中的this对象 在一个对象中的this始终引用当前对象,但是在函数中,特别是在闭包中,this有一些特殊的行为。 From 1efeafb10eb6f430101e0b036362ccfbdffef5bf Mon Sep 17 00:00:00 2001 From: "Sunshine.Wu" Date: Thu, 5 May 2016 03:06:12 +0800 Subject: [PATCH 2/2] add some writing MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 增加部分文字 --- chapters/JavaScript_Core/JavaScript_Basics/Function.md | 1 + 1 file changed, 1 insertion(+) diff --git a/chapters/JavaScript_Core/JavaScript_Basics/Function.md b/chapters/JavaScript_Core/JavaScript_Basics/Function.md index a871ccd..a0e9e9f 100644 --- a/chapters/JavaScript_Core/JavaScript_Basics/Function.md +++ b/chapters/JavaScript_Core/JavaScript_Basics/Function.md @@ -206,6 +206,7 @@ JavaScript函数对象的内部状态不仅包含着函数的代码逻辑,还 这里使用一个立即执行函数并传递当前的i的值,返回一个新生成的函数。在这个新生成的函数的闭包中就保存了当前的i的值。 +除了这样,还能将其完善得更优雅一些么?当然!我们还可以先在循环之外创建一个辅助函数,让这个辅助函数再返回一个绑定了当前i值的函数,这样则可以避免在循环中创建函数而带来无谓的计算&混淆。 var add_the_handlers = function (nodes) {