首页 > javascript检测变量是否被定义的方法

javascript检测变量是否被定义的方法

javascript有没有方式检测变量是否被定义呢?

这里讨论的是否被定义;是指var message;这样
没有赋值也算是定义了;

已知方式

var message;
console.log(message==undefined); //有定义的话返回true;没有的话直接报错;

另一方法

var message;
console.log(typeof message=="underfined"); 

这种方式,没有赋值和没有被定义都返回true;不会出现报错;但是不能区分不赋值和没有被定义.

有没有一种方式可以区分没有赋值和没有被定义而不报错的呢?


如果该变量附属于全局作用域,将 message 改为 window.message 即可

否则,最好的做法是:凡是用到的变量都要先声明,根据实际情况赋一个合理的空值(null,0 etc.)给变量,以此来检测


用var这种定义没赋值和没定义基本是一样的。定义之后,在window对象上能看到属性,但值是undefined。


try{
console.log(message)
}catch(e){
console.log(xxx+'is undefined');
}


如果是在全局环境,最合适的是用in操作符:

!('message' in window) // true则没定义
'message' in window && message === undefined // true则没赋值

如果不限,那么:

message === undefined // 抛异常则没定义,true则没赋值
【热门文章】
【热门文章】