常見(jiàn)的面試題

//請(qǐng)實(shí)現(xiàn)一個(gè)遍歷至 100 的 for loop 循環(huán)东涡,
//在能被 3 整除時(shí)輸出 "fizz"芜壁,在能被 5 整除時(shí)輸出 "buzz"舌狗,
//在能同時(shí)被 3 和 5 整除時(shí)輸出 "fizzbuzz"劲厌。
for (var i = 1; i <= 30; i++) {

    if (i % 3 === 0) {
        if (i % 5 === 0) {
            alert('fizzbuzz' + i);
            continue;
        }
        alert('fizz' + i);
        continue;
    } else if (i % 5 === 0) {
        if (i % 3 === 0) {
            alert('fizzbuzz' + i);
            continue;
        }
        alert('buzz' + i);
        continue;
    }
}


// 問(wèn)題:如何實(shí)現(xiàn)以下函數(shù)?

// add(2, 5); // 7
// add(2)(5); // 7
function add(a, b) {
    return a + b;
}
add(2, 5);

function add(a) {
    return function(b) {
        return a + b;
    }
}
add(2)(5);

// 問(wèn)題:下面的語(yǔ)句的返回值是什么米辐?"i'm a lasagna hog".split("").reverse().join("");
"goh angasal a m'i"

// 問(wèn)題:window.foo的值是什么洪己?
(window.foo || (window.foo = "bar")); // 'bar'


// 問(wèn)題:下面兩個(gè) alert 的結(jié)果是什么洽故?
var foo = "Hello";
(function() {
    var bar = " World";
    alert(foo + bar);
})();
alert(foo + bar);
'Hello World'
ReferenceError: bar is not defined(…)

// 問(wèn)題:foo.x的值是什么届良?
var foo = {
    n: 1
};
var bar = foo;
foo.x = foo = {
    n: 2
};
Object {
    n: 2
}

// 問(wèn)題:下面代碼的輸出是什么笆凌?
console.log('one');
setTimeout(function() {
    console.log('two');
}, 0);
console.log('three');
// 'one' 'three' 'two'



// 事件代理
// 事件代理根據(jù)事件冒泡原理機(jī)制通過(guò)將事件添加到父節(jié)點(diǎn)觸發(fā)函數(shù)
// 
< ul id = "parent-list" >
    < li id = "post-1" > Item 1 < /li> < li id = "post-2" > Item 2 < /li> < li id = "post-3" > Item 3 < /li> < li id = "post-4" > Item 4 < /li> < li id = "post-5" > Item 5 < /li> < li id = "post-6" > Item 6 < /li> < /ul>
    // 不好的做法
function addListeners4Li(liNode) {
    liNode.onclick = function clickHandler() {...
    };
    liNode.onmouseover = function mouseOverHandler() {...
    }
}

window.onload = function() {
    var ulNode = document.getElementById("parent-list");
    var liNodes = ulNode.getElementByTagName("Li");
    for (var i = 0, l = liNodes.length; i < l; i++) {
        addListeners4Li(liNodes[i]);
    }
}

// 獲取父節(jié)點(diǎn),并為它添加一個(gè)click事件
document.getElementById("parent-list").addEventListener("click", function(e) {
    // 檢查事件源e.targe是否為L(zhǎng)i
    if (e.target && e.target.nodeName.toUpperCase == "LI") {
        // 真正的處理過(guò)程在這里
        console.log("List item ", e.target.id.replace("post-"), " was clicked!");
    }
});

// 原型
// 每個(gè)對(duì)象都有一個(gè)prototype屬性伙窃,prototype是指向其他對(duì)象的引用
// 原型鏈 當(dāng)試圖去引用對(duì)象的屬性時(shí)菩颖,會(huì)觸發(fā)一個(gè)‘Get’操作样漆,檢查對(duì)象是否有這個(gè)屬性为障,當(dāng)沒(méi)有找到時(shí)
// 就試圖prototype所引用的對(duì)象中找直到找到為止,這個(gè)尋找的路徑就是原型鏈
// 原型繼承
function Foo(name) {
    this.name = name;
}
Foo.prototype.myName = function() {
    return this.name;
}

function Bar(name, label) {
    Foo.call(this, name);
    this.label = label;
}

Bar.prototype = Object.create(Foo.prototype);
Bar.prototype.myLabel = function() {
    return this.label;
}
var a = new Bar('Monica', 'student');
a.myName(); // 'Monica'
a.myLabel(); // 'student'



// 請(qǐng)解釋 JavaScript 中 this 是如何工作的
// 默認(rèn)綁定
var a = 2;

function foo() {
    return this.a;
}
foo(); // 2

// 隱式綁定
function foo() {
    return this.a;
}
var obj = {
    a: 3,
    foo: foo
}
obj.foo(); // 3
foo.call(obj); // 3

// 隱式丟失
var bar = obj.foo;
bar(); // 2


// new 綁定
function foo(a) {
    this.a = a;
}
var bar = new foo(5);
bar.a; // 5

// 閉包
function a() {
    for (var i = 0; i < 3; i++) {
        setTimeout(function timer() {
            console.log(i);
        }, 1000);
    }
}

function a() {
    for (var i = 0; i < 3; i++) {
        (function(j) {
            setTimeout(function timer() {
                console.log(j);
            }, 1000);
        })(i);
    }
}
a();

// this 在匿名函數(shù)的執(zhí)行環(huán)境具有全局性
var name = "The Window";  
var object = {    
    name: "My Object",
        getNameFunc: function() {      
        return function() {
            alert(window === this);        
            return this.name;      
        };    
    }  
};  
alert(object.getNameFunc()()); // "The Window"


function add() {
    var i = 0;

    function q() {
        return i++;
    }
    return q;
}
var f = add();
f();
f();

function addHandlers(nodes) {
    for (var i = 0; i < nodes.length; i++) {
        nodes[i].onclick = function() {
            alert(i);
        }
    }
}

function addHandlers(nodes) {
    function helper(i) {
        return function() {
            alert(i);
        }
    }
    for (var i = 0; i < nodes.length; i++) {
        nodes[i].onclick = helper(i);
    }
}
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末放祟,一起剝皮案震驚了整個(gè)濱河市鳍怨,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌跪妥,老刑警劉巖鞋喇,帶你破解...
    沈念sama閱讀 207,113評(píng)論 6 481
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場(chǎng)離奇詭異眉撵,居然都是意外死亡侦香,警方通過(guò)查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 88,644評(píng)論 2 381
  • 文/潘曉璐 我一進(jìn)店門纽疟,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)罐韩,“玉大人,你說(shuō)我怎么就攤上這事污朽∩⒊常” “怎么了?”我有些...
    開(kāi)封第一講書人閱讀 153,340評(píng)論 0 344
  • 文/不壞的土叔 我叫張陵蟆肆,是天一觀的道長(zhǎng)矾睦。 經(jīng)常有香客問(wèn)我,道長(zhǎng)炎功,這世上最難降的妖魔是什么枚冗? 我笑而不...
    開(kāi)封第一講書人閱讀 55,449評(píng)論 1 279
  • 正文 為了忘掉前任,我火速辦了婚禮蛇损,結(jié)果婚禮上赁温,老公的妹妹穿的比我還像新娘肛宋。我一直安慰自己,他們只是感情好束世,可當(dāng)我...
    茶點(diǎn)故事閱讀 64,445評(píng)論 5 374
  • 文/花漫 我一把揭開(kāi)白布酝陈。 她就那樣靜靜地躺著,像睡著了一般毁涉。 火紅的嫁衣襯著肌膚如雪沉帮。 梳的紋絲不亂的頭發(fā)上,一...
    開(kāi)封第一講書人閱讀 49,166評(píng)論 1 284
  • 那天贫堰,我揣著相機(jī)與錄音穆壕,去河邊找鬼。 笑死其屏,一個(gè)胖子當(dāng)著我的面吹牛喇勋,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播偎行,決...
    沈念sama閱讀 38,442評(píng)論 3 401
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼川背,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼!你這毒婦竟也來(lái)了蛤袒?” 一聲冷哼從身側(cè)響起熄云,我...
    開(kāi)封第一講書人閱讀 37,105評(píng)論 0 261
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤,失蹤者是張志新(化名)和其女友劉穎妙真,沒(méi)想到半個(gè)月后缴允,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 43,601評(píng)論 1 300
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡珍德,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,066評(píng)論 2 325
  • 正文 我和宋清朗相戀三年练般,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片锈候。...
    茶點(diǎn)故事閱讀 38,161評(píng)論 1 334
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡薄料,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出晴及,到底是詐尸還是另有隱情都办,我是刑警寧澤,帶...
    沈念sama閱讀 33,792評(píng)論 4 323
  • 正文 年R本政府宣布虑稼,位于F島的核電站琳钉,受9級(jí)特大地震影響,放射性物質(zhì)發(fā)生泄漏蛛倦。R本人自食惡果不足惜歌懒,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,351評(píng)論 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望溯壶。 院中可真熱鬧及皂,春花似錦甫男、人聲如沸。這莊子的主人今日做“春日...
    開(kāi)封第一講書人閱讀 30,352評(píng)論 0 19
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)。三九已至碍拆,卻和暖如春若治,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背感混。 一陣腳步聲響...
    開(kāi)封第一講書人閱讀 31,584評(píng)論 1 261
  • 我被黑心中介騙來(lái)泰國(guó)打工端幼, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人弧满。 一個(gè)月前我還...
    沈念sama閱讀 45,618評(píng)論 2 355
  • 正文 我出身青樓婆跑,卻偏偏與公主長(zhǎng)得像,于是被迫代替她去往敵國(guó)和親庭呜。 傳聞我的和親對(duì)象是個(gè)殘疾皇子滑进,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 42,916評(píng)論 2 344

推薦閱讀更多精彩內(nèi)容