## undefined 与 undeclared 的区别? 已在作用域中声明但还没有赋值的变量,是 `undefined` 的。相反,还没有在作用域中声明过的变量,是 `undeclared` 的。 对于 `undeclared` 变量的引用,浏览器会报引用错误,如 `ReferenceError: b is not defined `。但是我们可以使用 `typeof` 的安全防范机制来避免报错,因为对于 `undeclared`(或者 `not defined` )变量,`typeof` 会返回 `"undefined"`。