繁体   English   中英

jQuery插件函数参数用法

[英]jquery plugin function parameter usage

我坚持这个东西,增量不起作用,并一直返回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的本地版本作为参数传递来定义它。

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

您可以在此处了解更多信息: 为什么局部变量会杀死我的全局变量?

这是行的窍门。

$.fn.load = function(oft){ /*name changed*/

在javascript中,参数变量具有局部范围。 即使在函数内部更改它,外界也不会看到它。

因此,当您使用以下click回调函数调用load函数时,它始终会获得此值var oft = 0 ;

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

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM