为什么我不能测试未定义的变量

时间:2012-10-15 09:41:59

标签: javascript

我正在尝试这样做:

    var currentpage = page ? page : null;

但是,如果尚未定义页面,则脚本会引发错误。即使我测试页面未定义,只要脚本查找页面就会出错。

围绕这个问题的原因和方式是什么?

更新:让代码示例更清晰;

4 个答案:

答案 0 :(得分:1)

使用typeof运算符:

var a = (typeof page != 'undefined') ? 'page=' + page: '';
alert(a);

答案 1 :(得分:1)

您必须使用var page或函数function (page)在某处定义变量。如果您在同一范围内的任何位置执行此操作,则声明并存在该变量,即使它没有值。如果您正在尝试使用某个甚至未在同一范围内声明的变量,那就完全错了,因为它在任何情况下都无法正常工作,Javascript完全正确抛出错误。

答案 2 :(得分:1)

尝试从未声明的变量中读取只会抛出ReferenceError并终止脚本。

> x123
ReferenceError: x123 is not defined

更好的问题是,为什么你不知道你的变量是否存在。在正常情况下,这通常意味着你正在做一些糟糕的事情。为什么需要检查这种情况?当然,我们可以建议一种更好的方式。

答案 3 :(得分:0)

另一种方法就是这样,即使你的var a未定义,否则将执行else,即你的脚本不会停止执行

 if(window.a){
      alert('hello'); 
    } else {
      alert('this else will fire');
    }