gpt4 book ai didi

javascript - 这个命名的自调用函数如何传递参数?

转载 作者:行者123 更新时间:2023-11-30 09:00:12 25 4
gpt4 key购买 nike

晚上好

我一直在努力解决这个问题,下面是 Chris Coyer 编写的代码。

我知道这是一个名为“supports”的自调用函数,但我不明白“supports”是如何传递参数的(如下面的//测试部分所示)。请有人解释一下或指出正确的方向以供进一步阅读吗?

// Generic Testing Function
var supports = (function() {
var div = document.createElement('div'),
vendors = 'Khtml Ms O Moz Webkit'.split(' '),
len = vendors.length;

return function(prop) {
if ( prop in div.style ) return true;

prop = prop.replace(/^[a-z]/, function(val) {
return val.toUpperCase();
});

while(len--) {
if ( vendors[len] + prop in div.style ) {
return true;
}
}
return false;
};
})();

// Test
if ( supports('flowInto') ) {
$("html").addClass('cssregions');
} else {
$("html").addClass('no-cssregions');
}

最佳答案

让我们看看支持是什么:

var supports = (function() {
/* ... */
})();

好的,所以 supports 是当场调用的匿名函数的返回值。这个匿名函数返回什么?

    return function(prop) {
if ( prop in div.style ) return true;

prop = prop.replace(/^[a-z]/, function(val) {
return val.toUpperCase();
});

while(len--) {
if ( vendors[len] + prop in div.style ) {
return true;
}
}
return false;
};

好吧,所以这个函数的返回值(就是我们上面所说的 support 持有的)实际上是一个函数,它接受一个参数(prop )。

所以在这一点上应该清楚,做测试部分所做的事情是完全合乎逻辑的,即调用该函数:

if ( supports('flowInto') ) /* .... */

当您知道从哪里开始时,这真的并不复杂。

关于javascript - 这个命名的自调用函数如何传递参数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9846512/

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