当前位置:  开发笔记 > 编程语言 > 正文

为什么不鼓励在JavaScript循环中创建函数?

如何解决《为什么不鼓励在JavaScript循环中创建函数?》经验,为你挑选了1个好方法。

我是一个绝对的新手,我只是在JavaScript中阅读:好的部分.

在讨论范围的章节中,它说" 重要的是要理解内部函数可以访问外部函数的实际变量而不是副本,以避免出现以下问题." 然后以下两个示例如下所示:

//坏的例子

var add_the_handlers = function (nodes) {
    var i;
    for (i = 0; i < nodes.length; i += 1) {
        nodes[i].onclick = function (e) {
            alert(i);
        };
    }
 };

// END BAD EXAMPLE

var add_the_handlers = function (nodes) {
    var helper = function (i) {
        return function (e) {
            alert(i);
        };
    };
    var i;
    for (i = 0; i < nodes.length; i += 1) {
        modes[i].onclick = helper(i);
    }
};

根据作者的说法,第二个例子更好,因为它不在函数内部使用循环,否则它可能在计算上浪费.但我很茫然,不知道如何处理它们.我如何将他的理论应用于实际应用中?谁能说明这两个结合HTML的例子?



1> Kevin Le - K..:

问题在于关闭.内部函数可以访问i在这些函数之外定义的变量.在循环的所有迭代都已执行之后,变量i将保持值nodes.length.因此,当您点击时nodes[0],警报会说nodes.length,这不是您所期望的.(你会以为,警惕地说0.)当你点击这同样适用nodes[1],nodes[2]等警报为所有的人都会说nodes.length.

推荐阅读
mylvfamily
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有