Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/403.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/70.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 jquery插件函数参数用法_Javascript_Jquery_Jquery Plugins - Fatal编程技术网

Javascript jquery插件函数参数用法

Javascript jquery插件函数参数用法,javascript,jquery,jquery-plugins,Javascript,Jquery,Jquery Plugins,我坚持用这个东西,增量不起作用,一直返回0 var oft = 0; $.fn.load = function(oft){ oft = oft+2; } $('#check').click(function(){ $(this).load(oft); alert(oft); }); 直到我像这样更改参数名 var oft = 0; $.fn.load = function(offset){ /*name changed*/ oft = offset

我坚持用这个东西,增量不起作用,一直返回0

var oft = 0;
$.fn.load = function(oft){
       oft = oft+2;
}

$('#check').click(function(){
    $(this).load(oft);
    alert(oft);
});
直到我像这样更改参数名

var oft = 0;
$.fn.load = function(offset){ /*name changed*/
       oft = offset+2;
}

$('#check').click(function(){
    $(this).load(oft);
    alert(oft);
});

只是好奇,为什么?非常感谢清楚的解释,谢谢。这是因为局部变量和全局变量的作用域

在函数外部定义oft,使其具有全局范围。然后,通过将其作为参数传入来定义oft的本地版本

Javascript然后使用具有相同名称的本地版本。它对局部变量执行操作,然后当函数结束时,该变量消失。它们具有相同的名称,但不是相同的变量


您可以在此处阅读更多内容:

这是实现此技巧的一行

$.fn.load = function(oft){ /*name changed*/
在javascript中,参数变量具有局部作用域。即使在函数内部更改它,外部世界也不会看到它

所以,当您使用下面的click回调函数调用load函数时,它总是得到这个值var oft=0

但是,当您将参数名称更改为offset时,此offset将获得局部范围,并且变量oft在load函数中具有全局范围。由于变量oft具有全局作用域,因此可以在click回调函数中看到增量

$('#check').click(function(){
    $(this).load(oft);
    console.log(oft);
});