JavaScript调用看起来很有趣
JavaScript - invocation looks funny
我是JavaScript的新手,所以我一直在读一本名为《说JavaScript》的书。下面的代码显示了如何为每个函数创建一个新的环境,以便隔离每个函数中的值。我知道函数f()的要点,但调用函数f(()的最后一行是我不理解的,作者也没有解释
function f() {
var result = [];
for (var i=0; i<3; i++) {
(function () { // IIFE
var pos = i; // Maka a copy of i
var func = function () {
return pos;
};
result.push(func);
}());
}
return result;
}
// Returns 1. I don't understand the reason behind having [1]() after f().
// The syntax looks funny.
console.log(f()[1]());
提前谢谢。
要打破最后一行:
f()
-调用f函数。这返回一个数组,每个数组元素本身就是一个函数。
[1]
-访问生成的数组的第二个元素。数组是从零开始的,所以索引0
是第一个,1
是第二个。方括号用于访问数组元素或对象属性。
()
-立即调用我们刚刚访问的数组元素的函数。
函数f返回一个值为0、1、2:的数组
for (var i=0; i<3; i++) {
(function () { // IIFE
var pos = i; // Maka a copy of i
var func = function () {
return pos;
};
result.push(func);
因此,为了向您展示一个工作代码的示例,作者想打印到控制台,但不能只调用f,因为数组需要知道要显示什么索引,所以他添加了索引位置1,这样数组就知道您希望看到其中的哪个记录。
如果要将整个数组打印到控制台,则需要循环遍历数组,调用数组的每个索引。
总结一下:
f returns array
console.write will write to console
[1] is the index
and f()[1] is the position of the array to display
f
返回一个函数数组,每个函数返回其在数组中的索引位置。
这只是先调用f()
来获取数组,然后获取索引1处的函数f()[1]
,然后调用该函数来获取最终结果f()[1]()
的一种简写方式。
相关文章:
- Steam Web API:I'我不知道该如何处理这个看起来像哈希的url来生成图像
- 如何使删除线看起来像x
- Twitter Bootstrap 2.1.0子菜单在Responsive上看起来很混乱
- 用javascript创建一个看起来正常分布的模式
- PHP函数的返回看起来如何对AJAX和PHP有效
- 如何使Codeschools棱角分明的一面看起来相似
- HTML/JavaScript拖动&Drop-是否可以使重影图像*NOT*看起来'冲洗掉'
- 未捕获的语法错误:意外的令牌非法?看起来不错
- NodeJS readline有时会打印回第一个输入行(但并不总是,看起来是随机的)
- 如何检查html是否看起来'空'
- 看起来第一个console.log是'It’不太对
- 使用 CSS 或 javascript/jQuery,我会使用哪种方法来使我的网站的导航栏看起来更 3d-ish
- 如何使用CSS或JQuery使整个网页看起来更小(就像Chrome的缩小功能一样)
- 是否可以使用 DIV 而不是 iFrame,以便内容看起来像在同一页面中
- "消息:应为')'"但事实并非如此;看起来不对
- 如何使许多jQuery ajax调用看起来很漂亮
- ajax调用返回JSON ParseError即使认为JSON看起来是正确的
- JavaScript调用看起来很有趣
- D3 示例:看起来像一个 JavaScript 变量,但像一个函数一样调用
- AJAX调用使用IIFE?看起来不能像普通函数那样使用.done