检测变量是否为全局变量

时间:2012-02-04 22:45:17

标签: javascript

有没有办法检测变量是否在函数范围内全局定义?

6 个答案:

答案 0 :(得分:5)

您可以对全局对象使用in

'myvar' in window

例如......

alert( 'setTimeout' in window ); // true

答案 1 :(得分:2)

if( typeof window.myvar != "undefined") { /* variable is global */ }
else { /* variable is local */ }

答案 2 :(得分:1)

浏览器环境中的全局对象始终是     窗口 。所以你可以检查,是否     窗口[ 'yourprop'] 存在,看它是否是全球性的。

答案 3 :(得分:1)

var a = 1;
(function() {
  var b = 2;
}());

alert(window.a);
alert(window.b);

喜欢那个?

答案 4 :(得分:0)

也许使用window.variable === variable?例如:

var a = 5;
var b = 5;

function tst()
{
    var a = 4;
    alert(a === window.a); // Returns false because 'a' is local
    alert(b === window.b); // Returns true because 'b' is global
}

答案 5 :(得分:0)

您可以为窗口[varName]指定“unique”,然后测试实际值是否匹配:

varName = "myvar"
isGlobal = false
test = "some unique string"

savedValue = window[varName]
window[varName] = test

try {
    isGlobal = eval(varName + "==='" + test + "'")
} catch(e) {}

window[varName] = savedValue
如果isGlobal是全局的,并且未在当前范围内隐藏,则

true将为myvar