.call 和 .apply 的差異
.call跟.apply 都可以直接呼叫函式並且改變函式內 this 的指向,兩者最主要的差異是傳入的參數形式不同。
.call跟.apply 都可以直接呼叫函式並且改變函式內 this 的指向,兩者最主要的差異是傳入的參數形式不同。
透過``我們可以適當的控制腳本在瀏覽器載入的時機。
== 是鬆散比較運算子、===是嚴格比較運算子,兩者最大的不同:==是當等號兩邊 values 的型別不同時,會強制轉換資料型別與值,而 === 不會。
匿名函式 anonymous function 是指在 JavaScript 中沒有名稱的函式,通常用於一次性的操作或者作為參數傳遞給其他函式,此外,匿名函式不會在編譯階段被提升到作用域的上方(這是函式表達式的特性),因此它們在程式碼執行時才會被解析。匿名函式有許多應用場景,以下是一些常見的例子:
閉包是什麼?
事件委派 event delegation
JavaScript 是單執行緒的語言,所以一次只能執行一件事。事件循環 Event loop 是可以確保作為單行緒語言的 Javascript 可以在執行環境(瀏覽器或Node.js)中執行非同步 (asynchronous)程式碼而不會阻塞主執行緒的機制。
getElementsByClassName() 是一個 DOM API,可以用來取得指定 class 名稱的 DOM 元素,並且會回傳一個 HTMLCollection 物件。
getElementsByTagName() 是一個 DOM API,可以用來取得指定標籤名稱的 DOM 元素,並且會回傳一個 HTMLCollection 物件。
Hosting 提升指的是在執行 JavaScript 程式碼之前, JavaScript 引擎會將變數和函式的宣告提升到作用域的頂端。
使用 let、var 和 const 宣告變數時分別在:作用域、初始化、重複宣告、重新賦值、提升時有不同的行為。
Map和WeakMap
null
原型 (Prototype)
同步 synchronous
在 JavaScript 中this的指向會根據不同呼叫的方式而有不同的結果,以下分別列出幾種this的運作方式:
防抖和節流函式是前端常見的效能優化的技巧,透過這兩個函式可以有效的減少函式被觸發的次數,達到效能優化的目的。