Javascript 试图理解一个js文件
问题:Javascript 试图理解一个js文件,javascript,jquery,Javascript,Jquery,问题: 为什么要设置这些参数(窗口、文档、_未定义)?在函数体中,我们没有使用它们。这是一种保护这些变量名称不被本地范围内的其他脚本覆盖的方法(使用闭包) 即使它未在当前范围内使用,作者也可以将其添加为实践事项您正在使用它们,但“\u undefined”除外 结构: !function($, window, document, _undefined) { XenForo.PrefixManager = function($select) { function u
为什么要设置这些参数(窗口、文档、_未定义)?在函数体中,我们没有使用它们。这是一种保护这些变量名称不被本地范围内的其他脚本覆盖的方法(使用闭包)
即使它未在当前范围内使用,作者也可以将其添加为实践事项您正在使用它们,但“
\u undefined
”除外
结构:
!function($, window, document, _undefined)
{
XenForo.PrefixManager = function($select)
{
function update()
{
$checkboxes.each(function()
{
var $option = $select.find('option[value="' + this.value + '"]').attr('disabled', !this.checked);
if (!this.checked && $option.is(':selected'))
{
$select.find('option').first().attr('selected', true);
}
});
}
var $checkboxes = $($select.data('checkboxes')).click(update);
update();
};
// *********************************************************************
XenForo.register('select.PrefixManager', 'XenForo.PrefixManager');
}
(jQuery, this, document);
上述构造称为“立即函数”。该函数定义时没有名称,并使用底部传递的参数立即执行,在您的示例中是jQuery
、this
和document
函数不会污染全局空间,因为它甚至没有名称,但它的闭包(函数之间定义的所有内容都用大括号括起来)会烘焙您传递的值,因此即使在函数执行很长时间后,里面的代码也可以访问这些变量。在这里使用jQuery:$($select.data)(“复选框”)。单击(更新);
function(argument,..) {
}("value",...)