相关疑难解决方法(0)

javascript关闭立即评估

请考虑以下Javascript代码:

var a = [];

var f = function() {

    for (var i = 0; i < 3; i++) {
        a.push(function(){alert(i)});
    }
    for (var j = 0; j < 3; j++) {
        a[j]();
    }
};
Run Code Online (Sandbox Code Playgroud)

警报三次打印出'3'.我想要一个不同的行为 - 在循环的每次迭代中生成一个打印i的当前值的函数.即3个打印不同索引的函数.

有任何想法吗?

javascript closures scope loops

7
推荐指数
2
解决办法
2149
查看次数

何时使用匿名函数

我有一个对象ajax_tryit调用ajax_generic ans发送它3个函数.他们都被命名了.

使用匿名函数会更好(更高效,更快一点).

应用程序...这是ajax回调函数,可以做3件事,传递,失败或未定义(通常是php错误).

function ajax_generic( server_response_text, pass_func, fail_func, undefined_func )
{
    var aml_status = check_aml( server_response_text.slice( 0, 6 ) );
    if( aml_status === Constant.AML.PASS )
    {
        pass_func();
    }
    else if( aml_status === Constant.AML.FAIL )
    {
        fail_func();
    }
    else
    {
        undefined_func();
    }
}
function ajax_tryit( server_response_text, html_div )
{
    var pass_func = function {window.location.reload()};
    var fail_func = function(server_response_text) { alert( 'ajax_tryit(): ' + server_response_text ) } ;
    var undefined_func = function(server_response_text) { alert( 'php error: ' + server_response_text ) }; …
Run Code Online (Sandbox Code Playgroud)

javascript

1
推荐指数
1
解决办法
481
查看次数

标签 统计

javascript ×2

closures ×1

loops ×1

scope ×1