-2

我想知道以下两种情况是否具有完全相同的效果性能和安全性?哪一个是更好的实践?

使用加载事件

if (sSessionRole === "admin") {
    window.addEventListener("load", function () {
        getAjax("api_get_users.php", getUserData);
    });
}

function getUserData(ajUserDataFromServer) {
    //console.log( "USERS ARE EDITABLE" );
    showUsers(ajUserDataFromServer);
} 

使用自调用函数

if (sSessionRole === "admin") {
    (function () {
        getAjax("api_get_users.php", getUserData);
    })();
}

function getUserData(ajUserDataFromServer) {
    //console.log( "USERS ARE EDITABLE" );
    showUsers(ajUserDataFromServer);
}
4

1 回答 1

0

第一件事

七年前,Ben Alman 创造了术语“立即调用函数表达式(IIFE,发音为 iffy 来描述您所说的“自调用函数”。这个词似乎已经流行起来了。

这两个效果一样吗?

不,第一个设置活动在窗口的加载事件上发生。第二个立即运行它。大概你的 AJAX 调用是异步的,所以对 DOM 的更改在短时间内仍然不会发生,但这里有区别。如果此 AJAX 调用返回的值随时间变化,您的showUsers调用可能会得到不同的结果。

正如评论所指出的,这里的 IIFE 完全没有必要。它只是在组合中添加了一个多余的功能。

性能和安全

鉴于您有不同的行为,性能问题应该被视为没有实际意义,除了因为您在此过程中的不同开始时间,它们可能具有不同的感知加载时间。你需要自己测试一下。

我认为安全问题上可能没有区别。

于 2018-03-19T15:35:55.430 回答