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则没赋值