js里关于undefined不同情况的坑

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,如果有更好的方法麻烦告诉我一下,感谢。

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 第2章 基本语法 2.1 概述 基本句法和变量 语句 JavaScript程序的执行单位为行(line),也就是一...
    悟名先生阅读 4,221评论 0 13
  • 0. 写在前面 当你开始工作时,你不是在给你自己写代码,而是为后来人写代码。 —— Nichloas C. Zak...
    康斌阅读 5,375评论 1 42
  • let 命令 块级作用域 const 命令 顶层对象的属性 global 对象 let 命令 基本用法 ES6 新...
    嘉奇呦_nice阅读 1,650评论 0 2
  • 前端07班 王语句JavaScript程序的执行单位为行(line),也就是一行一行地执行。一般情况下,每一行就是...
    ea203453e188阅读 917评论 0 4
  • 我有体重从160减到130的经历,所以对于减肥有些感悟,于是说说减肥与大家分享,也许对大家有所帮助。 ...
    空谷孤松阅读 778评论 13 13