如何从jQuery中的函数内部获取外部变量?
这个问题在这里已经有了答案:
第二个例子工作的原因是因为您将myvar
定义为全局变量(可从任何地方访问)。
第一个例子不起作用,因为变量是在功能范围内定义的(这意味着除了该函数的作用域以外,所有函数都不可访问该变量,以及在该父函数范围内定义的函数范围)。
正如评论中所述,这只是JavaScript的工作原理。 如果这是您遇到的问题,那么现在可能是重新考虑您的架构的时候了。
一种常见的模式是将共享变量定义为父对象或函数的属性。 例如:
$(function() {
var funcOne = function() {
this.sharedVal = 'stack overflow';
};
var funcTwo = function() {
console.log(funcOne.sharedVal);
};
});
通过这种方式,您可以拥有不同的功能,可以在其他功能中与其他功能共享其属性,同时还可以保持全局名称空间的清洁。 但是请注意,在这个例子中,一个简单的var x = 'something';
不作为另一个函数的属性绑定也可以。
它的全部关于范围,在你的第二个例子中,myvar在全局范围内,而在第一个范例中它包含在函数中。
你可以强制它成为全球性的:
$(function(){
window.myvar = "stackoverflow";
});
$(function(){
alert(myvar);
});
(假设这是在浏览器中)
这是由于变量的范围。 在$(function()中定义的变量在这个函数内部有作用域,这里的enclusre描述了作用域,外部函数中定义的变量具有全局作用域,并在窗口对象中定义。
功能范围内。
$(function(){
var myvar = "stackoverflow";
});
// myvar is not accessible here.
窗口对象内部的范围。
$(function(){
window.myvar = "stackoverflow";
});
// myvar is accessible here.
链接地址: http://www.djcxy.com/p/40817.html
上一篇: How to get variables from the outside, inside a function in jQuery?