JQuery/Javascript:检查var是否存在

Mel*_*Dog 65 javascript variables jquery

可能重复:
如何检查JavaScript中是否定义了变量?
是否有标准函数来检查JavaScript中的null,undefined或blank变量?

我有一个脚本分为两部分.

第一部分设置var:

var pagetype = "textpage";
Run Code Online (Sandbox Code Playgroud)

第二部分是一个简单的if语句:

if(pagetype == "textpage") {
//do something
};
Run Code Online (Sandbox Code Playgroud)

现在第二部分if语句出现在我网站的所有页面上.但是声明var的第一部分只出现在我的一些页面上.

在没有var的页面上我自然会收到此错误:

Uncaught ReferenceError: pagetype is not defined
Run Code Online (Sandbox Code Playgroud)

所以我的问题是:是否有一种方法可以使用JavaScript或JQ来检测var是否存在(不仅仅是它是否分配了数据)?

我想象我会使用另一个if语句,例如:

if ("a var called pagetypes exists")....
Run Code Online (Sandbox Code Playgroud)

elc*_*nrs 118

我怀疑在SO上有很多这样的答案但是你走了:

if ( typeof pagetype !== 'undefined' && pagetype == 'textpage' ) {
  ...
}
Run Code Online (Sandbox Code Playgroud)

  • @JanDvorak:很确定JS无效...... (10认同)
  • 这不测试是否已声明`pagetype`,只测试其值的类型未定义. (2认同)

Ble*_*der 20

你可以使用typeof:

if (typeof pagetype === 'undefined') {
    // pagetype doesn't exist
}
Run Code Online (Sandbox Code Playgroud)


jer*_*mel 9

对于您的情况,99.9%的其他elclanrs答案是正确的.

但是因为undefined是一个有效的值,如果有人要测试一个未初始化的变量

var pagetype; //== undefined
if (typeof pagetype === 'undefined') //true
Run Code Online (Sandbox Code Playgroud)

确定var是否存在的唯一100%可靠方法是捕获异常;

var exists = false;
try { pagetype; exists = true;} catch(e) {}
if (exists && ...) {}
Run Code Online (Sandbox Code Playgroud)

但我永远不会这样写