摘要:再次聲明的函數會替代原有的函數第二點第一個函數中的指向。解決這些問題的關鍵是不要想當然,動手一步一步模擬執行順序,模擬變量提升情況第二種面向對象問題或高階函數等待更新
主要是解決JavaScript中比較難懂的部分,當然了,這部分經常在面試題中露面,這篇文章主要是講解解題思路,對新手會有很大幫助(如果你仔細看的話)。書籍方面,我看的是《你不知道的javascript》,精髓就在里面嘍。文章會持續更新( 如果能看到比較刁鉆的題目的話, 也歡迎大家將自己遇到的異常難于理解的JavaScript題目分享出來喔 )第0種 解析順序
function a() { b = function () { console.log(1) } return this; } var b = function () { console.log(2) } function b() { console.log(3) } b(); a().b(); b();
1.首先,你要明白的是3永遠不可能打印出來。這涉及到函數的聲明方式和執行順序問題。
直接用function的方式聲明的函數,函數可以在function聲明之前被調用,這說明在代碼運行之前就已經調用了。
再次聲明的函數var b會替代原有的函數b
2.第二點: 第一個函數中的this指向。一個點:函數中的this是在運行時候決定的,而不是函數定義時, 具體就看誰調用了this.在第一個函數中,沒有調用對象,在瀏覽器中,this就指向window
3.第三點: 還是第一個函數中,不使用var標識符直接定義的變量都屬于全局變量,也就是說第一個函數中的b是掛載到window上的。
第1種 變量提升(function(){ a = 5; alert(window.a); var a = 10; alert(a); })();
喜聞樂見!看見一堆的變量a就知道了,這是變量提升的問題了,只需要自己模擬出執行順序就行了.
等同于:
var a; // 第一步:變量提升 a = 5; // 后面的就直接拿上來 alert(window.a); a = 10; alert(a);
同類型題目:
var a=1; function test(){ console.log(a); var a=1; } test();
看見var就把它提升到最前面就行了,一樣畫瓢解決:
var a; a = 1; function test() { var a; console.log(a); a = 1; }
還有同類型的題目一樣可以依葫蘆畫瓢解決:
var foo = "hello"; (function (foo) { console.log(foo); var foo = foo || "world"; console.log(foo); })(foo); console.log(foo);
等。
解決這些問題的關鍵是:不要想當然,動手一步一步模擬執行順序,模擬變量提升情況
第二種 面向對象問題或高階函數( 等待更新 )文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。
轉載請注明本文地址:http://m.specialneedsforspecialkids.com/yun/102077.html
摘要:為此決定自研一個富文本編輯器。例如當要轉化的對象有環存在時子節點屬性賦值了父節點的引用,為了關于函數式編程的思考作者李英杰,美團金融前端團隊成員。只有正確使用作用域,才能使用優秀的設計模式,幫助你規避副作用。 JavaScript 專題之惰性函數 JavaScript 專題系列第十五篇,講解惰性函數 需求 我們現在需要寫一個 foo 函數,這個函數返回首次調用時的 Date 對象,注意...
摘要:題目最近在面試中遇到過這樣一道面試題,讓寫出左中右,三欄布局,左欄右欄固定寬度,中間欄寬度自適應。代碼如下效果如下所示乍一看實現了三列布局,但是題目要求等高,這個可就麻煩了。 題目 最近在面試中遇到過這樣一道面試題,讓寫出左中右,三欄布局,左欄右欄固定寬度200px,中間欄寬度自適應。要求三欄的高度隨最高的一欄展示 解題 step1 常規拿到這個面試題,首先想到的是三個盒子左浮動右浮動...
摘要:題目最近在面試中遇到過這樣一道面試題,讓寫出左中右,三欄布局,左欄右欄固定寬度,中間欄寬度自適應。代碼如下效果如下所示乍一看實現了三列布局,但是題目要求等高,這個可就麻煩了。 題目 最近在面試中遇到過這樣一道面試題,讓寫出左中右,三欄布局,左欄右欄固定寬度200px,中間欄寬度自適應。要求三欄的高度隨最高的一欄展示 解題 step1 常規拿到這個面試題,首先想到的是三個盒子左浮動右浮動...
摘要:今天有位朋友一早從妙味課堂轉來一個有關于布局的面試題,需要解決,花了點時間寫了幾個放上來與大家分享受。 今天有位朋友一早從妙味課堂轉來一個有關于CSS布局的面試題,需要解決,花了點時間寫了幾個DEMO,放上來與大家分享受。那么我們在看DEMO之前一起先來看看這個面試題的具體要求吧: 左側固定寬,右側自適應屏幕寬;左右兩列,等高布局;左右兩列要求有最小高度,例如:200px;(當內容超出...
閱讀 1758·2021-10-13 09:39
閱讀 1329·2019-08-30 13:58
閱讀 1419·2019-08-29 16:42
閱讀 3569·2019-08-29 15:41
閱讀 2999·2019-08-29 15:11
閱讀 2493·2019-08-29 14:10
閱讀 3419·2019-08-29 13:29
閱讀 2099·2019-08-26 13:27