let a
console.log(a)//undefined
console.log(b)//undefined
第二行是变量已声明但未赋值,第三行则是压根不存在这个玩意,但两种情况log出来都会是undefined,typeof操作也是如此。
实际开发中,可能其中某种情况会被忽略,但有时候这两种情况会产生较大的差异。
例如:
let timer
clearTimeout(timer)//不会报错,代码能继续往下执行
clearTimeout(timer2)//报错,ReferenceError: timer2 is not defined
因此,尽管typeof、console.log等函数去分别调用这两种情况里的变量都不会报错且结果均输出undefined,但是对其他函数则会产生截然不同的结果,有可能因为这个漏洞造成程序的崩溃。
那该怎么避免?
目前我没发现什么好的、简洁的方法去避免这个问题的产生。只能使用try/catch去捕获这里的ReferenceError,如果有更好的方法麻烦告诉我一下,感谢。
网友评论