摘要:函數(shù)表達式函數(shù)聲明立即執(zhí)行函數(shù)表達式。變量提升所有的聲明變量和函數(shù)都會被移動到各自作用域的最頂端,這個過程稱為提升。嚴格模式綁定到,否則為全局對象。這種設置為單向,不可取消。如果值為則禁止刪除這個屬性。是否為可枚舉的。
變量賦值
變量賦值分為兩個動作:
如果當前沒有聲明過,那編譯器會在當前作用域聲明一個。
運行時引擎會在作用域查找該變量,如果找到就對其賦值。
查詢有:LHS查詢和RHS查詢。
LHS:賦值操作的目標是誰。
RHS:誰是賦值操作的源頭,restrieve his source value(取到它的源值)。
舉個栗子:
// RHS引用,取到a的值。 console.log(a); // LHS引用,只需要對=2這個賦值操作找到一個目標 a = 2;
查看下面這個函數(shù)分別有幾次LHS和RHS?
function foo(a) { var b = a; return a + b; } var c = foo(2);
其中有3次LHS:
c = foo(2) a = 2 b =a
4次RHS:
foo a //因為要把a的值賦給b a+b中的a和別分別一次函數(shù)表達式和函數(shù)聲明簡單區(qū)分
使用關鍵字function來判斷是否為第一詞來區(qū)分,如果是為函數(shù)聲明,如果不是那么就是函數(shù)表達式。
// 函數(shù)表達式 (function xxx(){})(); // 函數(shù)聲明 function xxx()IIFE
IIFE: Immediately Invoked Function Expression(立即執(zhí)行函數(shù)表達式)。
變量提升所有的聲明(變量和函數(shù))都會被“移動”到各自作用域的最頂端,這個過程稱為“提升”。
函數(shù)聲明會被提前到普通變量之前,如果存在同名的函數(shù),后面的函數(shù)聲明會覆蓋前面的。
所有的變量都是先有聲明,再有賦值。栗子:
var a = 2; // 第一步為編譯階段任務 var a; // 第二步執(zhí)行階段任務 a = 2;如何判斷this
函數(shù)是否在new中調用?如果是,this綁定的是新創(chuàng)建的對象。
函數(shù)是否通過call、apply或者硬綁定?如果是,this綁定的是指定的對象。
函數(shù)是否在某個上下文中調用?如果是,this綁定上下文對象。
如果都不是,使用默認綁定。嚴格模式綁定到undefined,否則為全局對象。
foo.call(null) 使用默認綁定規(guī)則。
箭頭函數(shù)的綁定是無法被修改的(不適用于前4條規(guī)則),繼承外層函數(shù)調用的this綁定。
屬性描述符writeable:屬性的值是否可以修改。
configable:屬性的值可配置。如果是可以配置的,那么就可以使用defineProperty()方法來修改屬性描述符。這種設置為單向,不可取消。意思是可以從true到false,但是不能從false到true。如果值為false則禁止刪除這個屬性。
enumerable:是否為可枚舉的。如果是false那么在使用for...in的時候不會出現(xiàn)。
PS:今天看到本子上隨意寫的,記錄下來,方便查看。
文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉載請注明本文地址:http://systransis.cn/yun/89864.html
摘要:中幾個最重要的大知識點面向對象事件異步交互面向對象在中可以把任意的引用和變量都看成是一個對象。我們可以寫一個通用方法來模擬面向對象語言的多態(tài) JavaScript中幾個最重要的大知識點 面向對象 DOM事件 異步交互ajax 面向對象 在JS中可以把任意的引用和變量都看成是一個對象。面向對象的主要三個表現(xiàn)形式: 封裝 繼承 多態(tài) 1. 封裝 1.1 單例模式 var obj={...
摘要:有興趣的朋友可自行該知識點,這里件簡單提下吧。并且可能一個點或者兩個點不注意是不會產生多大性能影響,但是從多個點進行優(yōu)化后,可能產生的就會是質的飛躍了 針對js文件的加載位置 在HTML文件中,標簽是可以加在區(qū)域和區(qū)域的。這里鑒于JavaScript執(zhí)行和UI渲染的單線程原因,如果js文件載入會阻塞后面對于頁面的解析過程,頁面會等到js文件完全加載并運行后才繼續(xù)執(zhí)行該做的操作。那么問題...
摘要:使用來移除事件,參數(shù)必須與要移除的事件處理函數(shù)地址指針相同。在低版本瀏覽器中,綁定級事件的方法為中的級事件的事件處理程序都是在冒泡階段執(zhí)行的。 JavaScript中幾個最重要的大知識點 面向對象 DOM事件 異步交互ajax 事件 事件就是文檔和瀏覽器的瞬間交互行為 1.事件類型 點擊: click 滾輪: scroll 滑動: move 進入: enter 加載: load ...
摘要:作為前端開發(fā)必須掌握的一門語言,因為語言的靈活性,有些知識點看起來簡單,在真正遇到的時候,卻不一定會直接做出來,今天我們就一起來看看幾道題目吧題目這道題考察的知識點是運算符的優(yōu)先級。 Javascript作為前端開發(fā)必須掌握的一門語言,因為語言的靈活性,有些知識點看起來簡單,在真正遇到的時候,卻不一定會直接做出來,今天我們就一起來看看幾道題目吧 題目1 var val = smtg; ...
摘要:與響應不同的是,身份驗證并不能提供任何幫助,而且這個請求也不應該被重復提交。 JavaScript中幾個最重要的大知識點 面向對象 DOM事件 異步交互ajax AJAX AJAX是異步的javascript和xml(Asynchronous Javascript And XML)的縮寫,用于網(wǎng)頁局部刷新,提升用戶瀏覽體驗 通常前端程序員關于AJAX的掌握僅僅停留在會用AJAX發(fā)送...
閱讀 2193·2021-11-19 09:55
閱讀 2657·2021-11-11 16:55
閱讀 3187·2021-09-28 09:36
閱讀 1955·2021-09-22 16:05
閱讀 3290·2019-08-30 15:53
閱讀 1815·2019-08-30 15:44
閱讀 2907·2019-08-29 13:10
閱讀 1351·2019-08-29 12:30