有人可以解释这个 JavaScript 代码吗?

Could someone explain this JavaScript code?

        settings.supportsCssTransitions = (function (style) {
            var prefixes = ['Webkit', 'Moz', 'Ms'];
            for (var i = 0, l = prefixes.length; i < l; i++) {
                if (typeof style[prefixes[i] + 'Transition'] !== 'undefined') {
                    return true;
                }
            }
            return false;
        })(document.createElement('div').style);

匿名函数为什么要用'()'括起来? (document.createElement('div').style) 有什么用?是不是每次执行settings.supportsCssTransitions,‘document.createElement('div').style’都会作为默认参数传递给匿名函数?有人可以为我解释一下吗?

这是一个测试执行浏览器是否支持某些 CSS 属性的函数。

这是什么构造:

var result = (function(arg) { ...; return smth; })(arg)

是创建一个匿名函数并使用参数 arg 立即执行它,然后将其 return 值分配给 result.

使用连续的 top-level 语句可以获得相同的结果,但这样做是更好的格式化,因为函数内部使用的变量保留在其中。

document.createElement('div').style 位只是创建一个虚拟 HTMLElement 并将其 style 属性 传递给函数,然后函数对其进行分析。