我想知道以下两种情况是否具有完全相同的效果和安全性? 哪一个更好的做法?
使用加载活动
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);
}
答案 0 :(得分:0)
七年多以前,本·阿尔曼创造了“immediately invoked functions expression (IIFE, pronounced iffy)”一词来形容你所谓的 “自我调用功能”。那个词似乎已经流行起来了。
没有。第一个设置活动发生在窗口的加载事件上。第二个立即运行它。大概你的AJAX调用是异步的,所以对DOM的更改在短时间内仍然不会发生,但这里有所不同。如果此AJAX调用返回的值随时间变化,您可能会在showUsers
调用中获得不同的结果。
正如评论所指出的,这里的IIFE完全没必要。除了在混音中加入多余的功能外,它什么都不做。
鉴于您有不同的行为,性能问题应该被认为没有实际意义,除非因为您在此过程的开始时间不同而可能会有不同的感知时间。你需要自己测试一下。
我发现安全问题可能没有区别。