Tuk*_*nov 5 javascript variables jquery
是否可以调用在函数外部设置的相同名称变量?
var a = $(window).width(); // I want to call this variable
if(!$.isFunction(p)){
var a = $(window).height(); // Not this one
alert(a);
}
Run Code Online (Sandbox Code Playgroud)
小智 5
如果你想声明一个全局变量,你可以这样做
window.varname="This is a global variable";
Run Code Online (Sandbox Code Playgroud)
你可以访问相同的
alert(window.varname);
Run Code Online (Sandbox Code Playgroud)
现在,您还可以在具有相同名称的函数内部使用局部变量
var varname="This is a local variable";
Run Code Online (Sandbox Code Playgroud)
你可以正常访问它.
这是您的代码,以便您可以访问全局变量而不是本地变量.
var p = ['foo',''];
window.a = $(window).width();
if(!$.isFunction(p)){
var a = $(window).height();
alert(window.a);
}
Run Code Online (Sandbox Code Playgroud)
a在像您这样的代码片段中,正在重新定义变量。这是因为if语句不会为变量创建另一个作用域。然而,函数却可以。
在这样的情况下:
var a = 0; // global
function doStuff() {
var a = 10; // local
alert(a);
alert(window.a)
}
alert(a);
doStuff();
alert(a);
Run Code Online (Sandbox Code Playgroud)
在函数内部doStuff,变量a被重新定义。因此,此剪断将提醒数字0, 10, 0, 0。这证明全局变量没有在函数内部重新定义,因为a调用后的打印doStuff不会更改a全局范围内的值。
可以访问函数外部的变量a,因为任何未在非全局范围中声明的变量都放置在对象内部window。但是,如果使用此代码片段(调用匿名函数,创建新作用域):
var a = 0; // global
function doStuff() {
var a = 10; // local
alert(a);
alert(window.a)
function() {
var a = 20; // even more local
alert(a);
alert(window.a);
}();
}
alert(a);
doStuff();
alert(a);
Run Code Online (Sandbox Code Playgroud)
a您无法访问函数内部的值doStuff。您仍然可以使用访问全局变量window.a。
但是,在您的情况下,该if语句不会创建新范围,因此您将变量重新定义a为新 value $(window).height()。