摘要:數(shù)據(jù)類(lèi)型在最新的規(guī)范中,定義了種數(shù)據(jù)類(lèi)型不了解其中前種為基礎(chǔ)數(shù)據(jù)類(lèi)型,只有為引用類(lèi)型基礎(chǔ)數(shù)據(jù)類(lèi)型和引用類(lèi)型劃分的依據(jù)是其在內(nèi)存中存儲(chǔ)的形式基礎(chǔ)數(shù)據(jù)類(lèi)型在內(nèi)存對(duì)應(yīng)的位置存儲(chǔ)的是,,字符串,數(shù)值或布爾值引用類(lèi)型在內(nèi)存對(duì)應(yīng)的位置存儲(chǔ)的是地址通過(guò)操
數(shù)據(jù)類(lèi)型
在最新的 ECMAScript 規(guī)范中,定義了7種數(shù)據(jù)類(lèi)型
null
undefined
boolean
number
string
symbol(不了解)
object
其中前6種為基礎(chǔ)數(shù)據(jù)類(lèi)型,只有 object 為引用類(lèi)型
基礎(chǔ)數(shù)據(jù)類(lèi)型和引用類(lèi)型劃分的依據(jù)是其在內(nèi)存中存儲(chǔ)的形式
基礎(chǔ)數(shù)據(jù)類(lèi)型在內(nèi)存對(duì)應(yīng)的位置存儲(chǔ)的是null,undefined,字符串,數(shù)值或布爾值(symbol)
引用類(lèi)型在內(nèi)存對(duì)應(yīng)的位置存儲(chǔ)的是地址
通過(guò)操作符 typeof 判斷數(shù)據(jù)類(lèi)型,不過(guò)有以下例外
typeof null // "object" typeof function(){} // "function"
通過(guò)操作符 instanceof 判斷對(duì)象的類(lèi)型
The instanceof operator tests whether the prototype property of a constructor appears anywhere in the prototype chain of an object.
只要該對(duì)象的原型鏈上有以該構(gòu)造函數(shù)生成的對(duì)象,就返回true
[] instanceof Object // true [] instanceof Array // true [] instanceof Date // false函數(shù)與對(duì)象
typeof function(){} // "function"
函數(shù)也是對(duì)象
對(duì)象大都是通過(guò)函數(shù)new出來(lái),不考慮函數(shù)對(duì)象
var obj = { a: 10, b: 20 }; // 將看成是一種語(yǔ)法糖 // 相當(dāng)于 var obj = new Object(); obj.a = 10; obj.b = 20; var arr = [5, "x", true]; // 相當(dāng)于 var arr = new Array(); arr[0] = 5; arr[1] = "x"; arr[2] = true;
函數(shù)Fn也是對(duì)象,具有屬性prototype,其指向一個(gè)對(duì)象P,通過(guò)new Fn()產(chǎn)生的對(duì)象fn,fn.__proto === Fn.prototype,F(xiàn)n.prototype === P
Returns a reference to the Object constructor function that created the instance object.
對(duì)象通過(guò) constructor 找到生母是誰(shuí)
function Fn() { } let fn = new Fn() Fn.constructor === Function // true fn.constructor === Fn // true
.png)
通過(guò) hasOwnPrototype ,判斷某屬性是對(duì)象自身?yè)碛械模€是其原型鏈上的
函數(shù) 內(nèi)部變量聲明&提升函數(shù)在執(zhí)行之前會(huì)搜索函數(shù)體內(nèi)所有的函數(shù)聲明,將其移至函數(shù)體的開(kāi)始
函數(shù)在執(zhí)行之前會(huì)搜索函數(shù)體內(nèi)所有通過(guò) var 聲明的變量,將其移至函數(shù)體的開(kāi)始
移至函數(shù)聲明的后面
只聲明變量,并不給變量賦值或賦值為undefined,賦值的操作,仍在原地
console.log(Person) // function Person(){} function Person(){ } var Person = 2 console.log(Person) // 2
console.log(Person) // function Person(){} var Person = 2 function Person(){ } Person // 2 // 相當(dāng)于 console.log(Person) function Person(){ } var Person Person = 2參數(shù)
var v1 = {} function func(obj){ obj = { name: "v1" } } func(v1) // 相當(dāng)于 func(v1) function func(obj){ let obj = v1 obj = { name: "v1" } }
函數(shù)中傳遞參數(shù),相當(dāng)于額外執(zhí)行了let parameter = argument,在函數(shù)體內(nèi)聲明變量名為形參的局部變量,并且值為實(shí)參
this函數(shù)內(nèi)部this指向的對(duì)象取決于函數(shù)被調(diào)用的情形。
通過(guò) new 操作符調(diào)用函數(shù)且函數(shù)沒(méi)有明確的返回值時(shí),this指向函數(shù)將要?jiǎng)?chuàng)建的對(duì)象
函數(shù)被當(dāng)作對(duì)象的屬性調(diào)用,this指向調(diào)用該函數(shù)的對(duì)象
通過(guò)call,apply,bind顯示地給函數(shù)綁定調(diào)用對(duì)象
找不到對(duì)象的話(huà)就是宿主環(huán)境(window)
作用域函數(shù)可以通過(guò)參數(shù)獲得額外的變量,
函數(shù)也可以通過(guò)this對(duì)象來(lái)獲得額外的變量,
函數(shù)還可以通過(guò)作用域獲得額外的變量
相比于this對(duì)象,動(dòng)態(tài)地獲得額外的變量;通過(guò)作用域獲得的額外的變量是在函數(shù)書(shū)寫(xiě)的時(shí)候就確定了,靜態(tài)作用域
let x = 10; function foo() { console.log(x); } function bar(funArg) { let x = 20; funArg(); // 10 } bar(foo);
函數(shù)在執(zhí)行時(shí),其上下文是基于它書(shū)寫(xiě)的地方
閉包
1 function foo() { 2 var a = 2; 3 4 function bar() { 5 console.log( a ); 6 } 7 8 return bar; 9 } 10 11 var baz = foo(); 12 13 baz(); // 2
a 是 foo() 內(nèi)部的變量,不能在函數(shù)外部被直接訪問(wèn)
bar 可以訪問(wèn) foo() 內(nèi)部所有的變量,包括 a
bar 被作為返回值,返回給了外部變量 baz,因此通過(guò) baz 可以訪問(wèn) foo() 內(nèi)部的變量,包括 a
bar 內(nèi)部包裹著一段代碼 console.log(a) ,雖然它在第13行,通過(guò) baz 來(lái)調(diào)用,但實(shí)際上它執(zhí)行時(shí)的上下文仍是第5行的上下文
Closure is when a function is able to remember and access its lexical scope even when that function is executing outside its lexical scope.
閉包的本質(zhì)是作用域
本來(lái),當(dāng) foo() 執(zhí)行完后,這個(gè)作用域及其內(nèi)部的變量就被回收了,但是
bar() still has a reference to that scope, and that reference is called closure.
文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請(qǐng)注明本文地址:http://specialneedsforspecialkids.com/yun/92555.html
摘要:回調(diào)函數(shù)異步回調(diào)簡(jiǎn)明講解敘言異步回調(diào)常用于某些業(yè)務(wù)需要很長(zhǎng)時(shí)間處理,但是又需要立刻返回結(jié)果,這種情況都需要開(kāi)辟線程獨(dú)立處理需要長(zhǎng)時(shí)間多的業(yè)務(wù),也無(wú)處理完了,回調(diào)回調(diào)函數(shù),再去處理與之有關(guān)的需要在該業(yè)務(wù)之后處理的業(yè)務(wù)。 java回調(diào)函數(shù)-異步回調(diào)-簡(jiǎn)明講解 敘言: 異步回調(diào)常用于某些業(yè)務(wù)需要很長(zhǎng)時(shí)間處理,但是又需要立刻返回結(jié)果,這種情況都需要開(kāi)辟線程獨(dú)立處理需要長(zhǎng)時(shí)間多的業(yè)務(wù),也無(wú)處理...
摘要:邏輯行與物理行所謂物理行是你在編寫(xiě)程序時(shí)你所看到的內(nèi)容。以作為不同邏輯行的結(jié)束與分隔。在邏輯行的開(kāi)頭留下空白區(qū)使用空格或制表符用以確定各邏輯行的縮進(jìn)級(jí)別,而后者又可用于確定語(yǔ)句的分組。每一組這樣的語(yǔ)句被稱(chēng)為塊。 只是打印出 hello world 肯定是不夠的,是嗎?你會(huì)希望做得比這還要多——你想要輸入一些內(nèi)容,操縱它,然后從中得到一些輸出出來(lái)的內(nèi)容。我們可以在 PHP 中通過(guò)使用變量...
摘要:在線挑戰(zhàn),還沒(méi)用過(guò),貌似現(xiàn)在對(duì)英文資料心里還有種抵觸,必須克服實(shí)驗(yàn)樓研發(fā)工程師包含了等學(xué)習(xí)課程。書(shū)的作者就是開(kāi)發(fā)了用于數(shù)據(jù)分析的著名開(kāi)源庫(kù)的作者英文資料,對(duì)數(shù)據(jù)分析中要用到的一些庫(kù),等等做了簡(jiǎn)要介紹。形式的資料,示例代碼都很全。 showImg(https://segmentfault.com/img/remote/1460000004852849); 一、說(shuō)明 面對(duì)網(wǎng)絡(luò)上紛繁復(fù)雜的資...
摘要:并且各種各樣的貨物被集裝箱標(biāo)準(zhǔn)化了,集裝箱和集裝箱之間不會(huì)互相影響。容器可以被創(chuàng)建啟動(dòng)停止刪除暫停等。默認(rèn)情況下,為了排障需求,退出的容器并不會(huì)立即刪除,除非手動(dòng)。這是指用鏡像為基礎(chǔ)來(lái)啟動(dòng)容器。 簡(jiǎn)明docker教程 一、什么是docker 二、docker與虛擬機(jī)比較 三、安裝docker 四、基本概念 1、鏡像 2、容器 3、數(shù)據(jù)卷 4、掛載 五、參考資料 有收...
摘要:課程簡(jiǎn)介簡(jiǎn)明易懂的課程,不僅適用于那些有其它語(yǔ)言基礎(chǔ)的同學(xué),對(duì)沒(méi)有編程經(jīng)驗(yàn)的同學(xué)也非常友好。建議遵守以下約定使用個(gè)空格來(lái)縮進(jìn)永遠(yuǎn)不要混用空格和制表符在函數(shù)之間空一行在類(lèi)之間空兩行字典,列表,元組以及參數(shù)列表中,在后添加一個(gè)空格。 showImg(https://segmentfault.com/img/bVCldE); 課程簡(jiǎn)介:簡(jiǎn)明易懂的 Python3 課程,不僅適用于那些有其它語(yǔ)...
閱讀 1093·2021-10-12 10:11
閱讀 877·2019-08-30 15:53
閱讀 2286·2019-08-30 14:15
閱讀 2961·2019-08-30 14:09
閱讀 1197·2019-08-29 17:24
閱讀 972·2019-08-26 18:27
閱讀 1283·2019-08-26 11:57
閱讀 2146·2019-08-23 18:23