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 然后使用具有相同名称的本地版本。它对局部变量进行了操作,然后当函数结束时该变量消失了。他们有相同的名字,但他们不是同一个变量。
您可以在此处阅读更多内容:Why does local variable kill my global variable?
这是行之有效的方法。
$.fn.load = function(oft){ /*name changed*/
在 javascript 中,参数变量具有局部作用域。即使您在函数内部更改它,外界也不会看到它。
所以当你使用下面的点击回调函数调用load函数时,它总是得到这个值var oft = 0;
$('#check').click(function(){
$(this).load(oft);
console.log(oft);
});
但是当您将参数名称更改为 offset 时,此 offset 将获取局部作用域和变量 经常 在加载函数中具有全局作用域。由于变量 oft 具有全局范围,您可以在点击回调函数中看到增量。
我坚持这个东西,增量不起作用并一直返回 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 然后使用具有相同名称的本地版本。它对局部变量进行了操作,然后当函数结束时该变量消失了。他们有相同的名字,但他们不是同一个变量。
您可以在此处阅读更多内容:Why does local variable kill my global variable?
这是行之有效的方法。
$.fn.load = function(oft){ /*name changed*/
在 javascript 中,参数变量具有局部作用域。即使您在函数内部更改它,外界也不会看到它。
所以当你使用下面的点击回调函数调用load函数时,它总是得到这个值var oft = 0;
$('#check').click(function(){
$(this).load(oft);
console.log(oft);
});
但是当您将参数名称更改为 offset 时,此 offset 将获取局部作用域和变量 经常 在加载函数中具有全局作用域。由于变量 oft 具有全局范围,您可以在点击回调函数中看到增量。