我有一个基本问题。在 Jquery 中,如果我在函数内声明一个变量并为其分配一个值,如何维护此更改?我以为它会覆盖它。请帮忙。
这是一个简单的例子来说明我的意思。警报框显示 2 但如何在 x 中保存 3 ??
<script>
var x=2
$(document).ready(function(){
(function(){
x=3;
});
alert(x);
});
</script>
您编写了一个函数表达式,但它不是 IIFE 的一部分,因此它不会被执行。您必须在函数表达式后面加上
()
才能执行它:
var x = 2;
$(document).ready(function() {
(function() {
x = 3;
})();
alert(x);
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
你写的函数没有被使用。试试这个吧
<script>
var x=2
$(document).ready(function(){
(function(){
x=3;
})();
alert(x);
});
</script>
注意添加的括号,它在声明后立即调用该函数。
一个工作的jsfiddle:http://jsfiddle.net/nayish/x9kzefc2/
在您的示例中,由于 x 是在函数外部定义的,因此它被输入到函数闭包中,因此,如果您立即或稍后运行该函数,它将更改在函数外部定义的 x 的值范围。
自调用函数说明:
https://sarfraznawaz.wordpress.com/2012/01/26/javascript-self-invoking-functions/
您创建了一个函数,但未设置且不调用。
看这里,如何设置和调用:
var x=2
$(document).ready(function(){
var test = (function(){
x=3;
});
test();
alert(x);
});
或
var x=2
$(document).ready(function(){
(function(){
x=3;
})();
alert(x);
});