js检测变量是否已定义

在日常开发中,如果需要检测一个两是否存在的话,可以参考下面的demo:

var a = 123;

if (typeof a === "undefined") {
    console.log("a is undefined");
}else {
    console.log(a);        // 123
}

这样就避免了如果变量a未进行声明的情况下的一个报错,如果前面没有定义变量a,输出的结果是这样的:

 

**错误做法:

var a = 123;

// 检测变量c是否已经定义
if (!!c) {
    console.log("ccc");
}

这样会直接报错:c is not defined

因为c根本没有声明,更没有定义。


再来看一个dmeo:

var a = 123;

if (typeof c === "undefined") {
    console.log("c is undefined");
}else {
    console.log(c);        // 代码不会执行到这里来
}

这个demo会输出c is undefined,因为c没有声明也没有定义。但是为什么不会像上一个demo一样抛出一个错误呢?原因是因为type这个一元操作符有特殊的安全防范机制。可以来看看typeof对不同数据的操作是什么样的结果:

console.log(typeof undefined);    // undefined
console.log(typeof null);         // object
console.log(typeof 123);          // number
console.log(typeof "字符串");      // string
console.log(typeof {});           // object
console.log(typeof aa);           // undefined

从上面这个demo来看,typeof对undefined和未声明的变量返回的都是undefined,所以刚才上面那个例子中,typeof c 不会进行报错,就是因为它返回了一个字符串类型的undefined。


还有一个方法也是可以检测变量是否存在的,那就是使用全局变量window。在js中,所有全局变量都是window的属性,所以当我们要知道这个变量是否存在的时候,直接使用.的方式来访问这个变量即可。如下:

var a = 123;

console.log(window.a);    // 123
console.log(window.b);    // undefined

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值