在js中经常能看到以下的写法: var obj1 = a || b || c; var obj2 = a && b && c; 刚看到时,很容易认为返回的两个变量都是 boolean 类型,但实际上返回的却是 a.b.c的其中之一. 其实这是一种相对安全并且高效的适配写法,可以避免过多的 if 判断,使代码看上去更简洁. 首先,|| 和 && 比较抽象的逻辑是: 1.a || b,如果a不存在,则返回b 2.a && b,如果a存在,则返回b…
网上找了两个经典的例子 var foo = 1; function bar() { if (!foo) { var foo = 10; } alert(foo); } bar(); // 10 var a = 1; function b() { a = 10; return; function a() {} } b(); alert(a);// 1 在JavaScript中,函数.变量的声明都会被提升(hoisting)到该函数或变量所在的scope的顶部.即--JavaScript的变量提升.…