jquery插件函数参数用法

时间:2015-09-02 02:51:14

标签: 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+2;
}

$('#check').click(function(){
    $(this).load(oft);
    alert(oft);
});
只是好奇,为什么呢?明确的解释将非常感谢,谢谢你

2 个答案:

答案 0 :(得分:0)

这是因为本地和全局变量范围。

您在函数外定义oft,因此它具有全局范围。然后,通过将其作为参数传递来定义本地版本的oft。

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

您可以在此处阅读更多内容:Why does local variable kill my global variable?

答案 1 :(得分:0)

这就是诀窍。

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

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

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

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

但是当您将参数名称更改为 offset 时,此偏移获取本地范围,而变量 oft 具有全局范围加载功能。由于变量 oft 具有全局范围,因此您可以在单击回调函数中看到增量。