标签:rip efi bar ons s系列 编译 需要 一段 var
a = 2; var a; console.log(a);
console.log(a); var a = 2;
var a; a = 2; console.log(a); //2
var a; console.log(a); // undefined a = 2;
foo(); // TypeError bar(); // ReferenceError var foo = function bar(){ // ... }
var foo; foo(); bar(); foo = function() { var bar = ...self... //... }
foo(); // 1 var foo; function foo() { console.log(1); } foo = function(){ console.log(2) }
这个代码会被引擎理解成如下形式
function foo() { console.log(1) } foo(); // 1 foo = function() { console.log(2) }
尽管重复的声明会被忽略掉,但是后面的函数声明还是可以覆盖前面的
foo(); var a = true; if(a){ function foo() { console.log(‘a‘) } }else{ function foo(){ console.log(‘b‘) } }
这里 foo 输出了 b ,不是我们想要的结果,因为声明被覆盖掉了,所以需要注意这种行为并不可靠,尽可能避免在块内部声明函数
标签:rip efi bar ons s系列 编译 需要 一段 var
原文地址:https://www.cnblogs.com/wzndkj/p/12348491.html