有人可以解释这个 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
属性 传递给函数,然后函数对其进行分析。
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
属性 传递给函数,然后函数对其进行分析。