// 1
function foo() {
    var num = 123;
    console.log(num); //
}
foo();
console.log(num); //
// 2
var scope = "global";
function foo() {
    console.log(scope); //
    var scope = "local";
    console.log(scope); //
}
foo();
// 3
if("a" in window){
    var a = 10;
}
alert(a); // ?


if(!"a" in window){
    var a = 10;
}
alert(a); // ?
// 4
var foo = 1;
function bar() {
    if(!foo) {
        var foo = 10;
    }
    alert(foo); //
}
bar();

面试题分析:

function Foo() {
 getName = function(){ alert(1); };
 return this;
}

Foo.getName = function() { alert(2); };
Foo.prototype.getName = function(){ alert(3); };
var getName = function() { alert(4); };
function getName(){ alert(5); }

Foo.getName(); // ?
getName(); // ?
Foo().getName(); // ?
getName(); // ?
new Foo.getName(); // ?
new Foo().getName(); // ?
new new Foo().getName(); // ?

面试题-1

var num = 123;
function f1() {
    console.log(num); // 123
}

function f2() {
    var num = 456;
    f1();
}

f2();

面试题1-变式

var num = 123;
function f1(num) { // 参数理解为:函数内部的一个变量
    console.log(num); // 456
}


function f2() {
    var num = 456;
    f1(num); 
}

f2();

面试题1-变式

var num = 123

function f1() {
    console.log(num); // 456
}

f2();

function f2() {
    num = 456;
    f1();
}
console.log(num); // 456

面试题2-练习

(function (a) {
    console.log(a); //
    var a = 10;
    function a(){}
}( 100 ));