原创 JavaScript 學習筆記 之 作用域 (四) - 提升

4.1 變量提升 console.log(a);//<--理解爲什麼是undefined而不是2,也不是ReferenceError異常。 var a=2; 引擎會在解釋JavaScript代碼之前首先對其進行編譯,編譯階段中的一部分工

原创 JavaScript 學習筆記 之 作用域 (二) - 詞法作用域

問題:詞法作用域是什麼?怎麼才能在運行時“修改”(也可以說是欺騙)詞法作用域呢?   2.1 詞法作用域 簡單的說,詞法作用域就是定義在詞法階段的作用域。詞法作用域由你寫代碼時把變量和塊作用域寫在哪裏決定的。 因此,當詞法分析器處理代碼時

原创 JavaScript 學習筆記 之 運算符優先級

運算符優先級 本文不會具體到每個運算符的優先級比較,而是側重於介紹運算符優先級在代碼中的相關規則 var a = "a", b = "b", c = "c"; a && b || c; //"b"

原创 JavaScript 學習筆記 之 作用域 (一) - 作用域是什麼

問題:變量存儲在哪裏?更重要的是,在需要的時候程序如何找到他們?   1.1 編譯原理:   儘管通常將JavaScript歸類爲“動態”或者“解釋執行”語言,但事實上它是一門編譯語言。 但與傳統的編譯語言不同,他不是提前編譯的,編譯結

原创 JavaScript 學習筆記 之 作用域 (三) - 函數作用域和塊作用域

3.1 函數中的作用域 函數作用域的含義是指,屬於這個函數的全部變量可以在整個函數的範圍內使用及複用(事實上在嵌套的作用域中也可以使用)。   3.2 隱藏內部實現 從所寫代碼中挑出一個任意的片段,然後用函數聲明進行包裝,實際上就是把這些

原创 關於caller和callee的對比

代碼和結果 function a(){ console.log("a.caller",a.caller); console.log("arguments.callee",arguments.callee); }

原创 JavaScript 學習筆記 之 回調

Continuation 先來看這段異步回調的例子 //A setTimeout(function() { //C }, 1000); //B 其中 A B表示程序的前半部分(也就是現在),而C則表示程序的後半部分

原创 Vue 入門級學習筆記 實例

創建一個Vue實例 var vm = new Vue({ //選項對象 }); 一個Vue應用通過一個由new Vue創建的根Vue實例和可選的嵌套的,可複用的組件樹組成 所有的Vue組件都是Vue實例,並接受相同的選項對

原创 JavaScript 學習筆記 之 異步(二)

併發 我們在開發過程中經常會遇到的一個情況是,兩個事件同時執行 比如在實現一個懶加載的界面的時候 用戶滾動頁面,觸發一個ajax請求 當用戶滾動頁面足夠快的時候 發起一個ajax請求的事件可能會與返回ajax響應的事件同時(同一時間段內,

原创 JavaScript 學習筆記 之 異步(一)

分塊的程序 JavaScript中的程序是由多個塊組成的 程序執行時,只有一個塊是現在執行,其他的塊都是將來再執行 最簡單常見的塊單位是函數   我們在寫程序的時候可能會經常遇到一個問題 程序中某個塊我們並不希望在現在執行的塊結束後就立刻

原创 JavaScript 學習筆記 之 語法

自動分號 JavaScript中存在着自動補上分號的行爲,即自動分號插入(縮寫ASI) ASI只在換行處起作用,而且只有在代碼行末尾只有空格或註釋的時候纔會自動補上分號 //不會自動補分號 var a, b /

原创 JavaScript 學習筆記 之 強制類型轉換 (二)

字符串和數字之間的隱式強制類型轉換 先看一組例子 "42" + "0"; //420 42 + 0; //42 這種情況通常我們會理解爲,+運算符的任意一邊(或者兩遍都)出現了字符串則是字符串拼接 那麼再看一組例子

原创 JavaScript 學習筆記 之 語句和表達式

語句和表達式 語句和表達式的區別就像英語中的句子和短語的區別一樣,多個表達式通過標點符號或者連接詞連接成語句 JavaScript中表達式可以返回一個結果值 var a = 3 * 6; var b = a; b; 這三行代

原创 JavaScript 學習筆記 之 強制類型轉換 (三)

寬鬆相等(==)和嚴格相等(===) 爲什麼這個問題的討論要放在類型轉換這裏呢? 首先,這裏有一個常見的誤區,==是檢查值是否相等,===是檢查值和類型是否相等 然而JavaScript中實際上是 ==允許在比較中進行強制類型轉換,而==

原创 JavaScript 學習筆記 之 強制類型轉換 (一)

值類型轉換 JavaScript中的值類型轉換分兩種 類型轉換(顯式,發生在編譯階段) var a = 42; var b = String(a); console.log(typeof b); //string 強制類型轉