gpt4 book ai didi

javascript - for循环中的自调用函数

转载 作者:行者123 更新时间:2023-11-28 16:27:22 25 4
gpt4 key购买 nike

这是来自 https://github.com/Khan/khan-exercises/blob/master/khan-exercise.js 的代码

for ( var i = 0; i < loading; i++ ) (function( mod ) {
if ( !testMode && mod.src.indexOf("/khan-exercises/") === 0 && mod.src.indexOf("/MathJax/") === -1 ) {
// Don't bother loading khan-exercises content in production
// mode, this content is already packaged up and available
// (*unless* it's MathJax, which is silly still needs to be loaded)
loaded++;
return;
}

// Adapted from jQuery getScript (ajax/script.js)
var script = document.createElement("script");
script.async = "async";

for ( var prop in mod ) {
script[ prop ] = mod[ prop ];
}

script.onerror = function() {
// No error in IE, but this is mostly for debugging during development so it's probably okay
// http://stackoverflow.com/questions/2027849/how-to-trigger-script-onerror-in-internet-explorer
Khan.error( "Error loading script " + script.src );
};

script.onload = script.onreadystatechange = function() {
if ( !script.readyState || ( /loaded|complete/ ).test( script.readyState ) ) {
// Handle memory leak in IE
script.onload = script.onreadystatechange = null;

// Remove the script
if ( script.parentNode ) {
script.parentNode.removeChild( script );
}

// Dereference the script
script = undefined;

runCallback();
}
};

head.appendChild(script);
})( urls[i] );

奇怪的事情:我们看到的是自调用函数,而不是通常的 for 循环代码块!(在其他自调用函数内部)为什么会这样?这个函数将如何运行?

最佳答案

基本上,for 循环 每次都会运行该函数,并将值 url[i] 传递到 mod 参数中。

for ( var i = 0; i < loading; i++ ) (function( mod ) {...The code...})(urls[i]);

如果你在代码中注意到,你会看到这个

(function( mod ) {...The code...})(urls[i])

这是一个函数调用,将 urls[i] 传递给参数 mod

关于javascript - for循环中的自调用函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7534031/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com