Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/423.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 试图理解一个js文件_Javascript_Jquery - Fatal编程技术网

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",...)