基础的牢固对于阅读源码等有很大的帮助
typeof 的 “安全防御行为”
1
2
3 if (typeof atob === "undefined") {
atob = function() { /*..*/ };
}
此处如果在if语句中用var变量声明atob,则会造成变量提升,即使没有走if语句。(参见作用域与闭包)1
2
3var a = true
if(!a) {e= 2}
else {c = 1}
打印e 会输出 ReferenceError: e is not defined
而如果1
2
3var a = true
if(!a) {var e= 2}
else {c = 1}
输出的为undefined 变量被提升了