Javascript jquery插件函数参数用法
我坚持用这个东西,增量不起作用,一直返回0Javascript 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
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);
});