版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
除了中新加入的類型,剩下種類型都是我們?nèi)粘i_發(fā)中的了,但是,要想回答文章一開始的問題,我們需要重新認(rèn)識(shí)一下這些,下面我們就來從簡(jiǎn)單到復(fù)雜,重新Undefined、Undefined類型表示未定義,它的類型只有一個(gè)值,就是undefined。任何變量在賦值前是Undefinedundefined,一般我們可以用全局變量undefined(就是名為undefined的這個(gè)變量)來表達(dá)這個(gè)值,或者void運(yùn)算來把任一一個(gè)表達(dá)式變成undefined值。言公認(rèn)的設(shè)計(jì)之一,所以,我們?yōu)榱吮苊鉄o意中被篡改,我建議使用void0來獲取Undefinednull有一定的表意差別,null表示的是:“定義了但是為空”。所以,在實(shí)際編程時(shí),我們一般不會(huì)把變量賦值為undefined,這樣可以保證所有值為undefined的變量,都是從未賦關(guān)鍵字,所以在任何代碼中,你都可以放心用null關(guān)鍵字來獲取nullBoolean類型有兩個(gè)值,true和false,它用于表示邏輯意義上的真和假,同樣有關(guān)鍵字truefalseString用于表示文本數(shù)據(jù)。String2^531,這在一般開發(fā)中都是夠用的,但是有因?yàn)镾tring的意義并非“字符串”,而是字符串的UTF16編碼,我們字符串的操作charAt、Note:現(xiàn)行的字符集國(guó)際標(biāo)準(zhǔn),字符是以Unicode的方式表示的,每一個(gè)Unicode的碼點(diǎn)表示一個(gè)字符,理論上,Unicode的范圍是無限的。UTF是Unicode的編碼方式,規(guī)定了碼點(diǎn)在計(jì)算機(jī)中的表示方法,常見的有UTF16和UTF8。Unicode的碼點(diǎn)通常用U+???來表示,其中???是十六進(jìn)制的碼點(diǎn)值。0-65536(U -U+FFFF)的碼點(diǎn)被稱為基本字符區(qū)域JavaScript中的字符串是 JavaScript字符串把每個(gè)UTF16單元當(dāng)作一個(gè)字符來處理,所以處理非BMP(超出U U+FFFF范圍)的字符時(shí),你應(yīng)該格外 JavaScript這個(gè)設(shè)計(jì)繼承自Java, 現(xiàn)起來簡(jiǎn)單”。因?yàn)楝F(xiàn)實(shí)中很少用到BMP之外的字符。 trIE8規(guī)定的雙精度浮點(diǎn)數(shù)規(guī)則,但是t為了表達(dá)幾個(gè)額外的語言場(chǎng)景(比如不讓除以出錯(cuò),而引入了無窮大的概念),規(guī)定了幾個(gè)例外情況:NaN9007199254740990,這原本是符合IEEE規(guī)則的數(shù)字;另外,值得注意的是,JavaScript中有+0和-0,在加法類運(yùn)算中它們沒有區(qū)別,但是除法的場(chǎng) 和01/xInfinity還是 有效的整數(shù)范圍是0x1fffffffffffff至0x1fffffffffffff,所以Number無法精確表此范圍外的整數(shù) 也不行)來比較, 題的問題,為什么在JavaScript,01+02不能03conconolelog(01+0 0這里輸出的結(jié)果是f所以實(shí)際上,這里錯(cuò)誤的不是結(jié)論,而是比較的方法,正確的比較方法是使用tconsole.log(console.log(Math.abs(0.1+0.2-0.3)<= 就是trueSymbol是ES6引入的新 象系統(tǒng)被用Symbol塑 詳細(xì)敘述Symbol跟對(duì)象系統(tǒng)這 Symbol可以具有符串 我們創(chuàng)建Symbol的方式是使用局的Symbol數(shù) varvarmySymbolSymbol("my一些標(biāo)準(zhǔn)中提到的Symbol,可以在全局的Symbol函數(shù)的屬性中找到。例如,我們可以使 tor來自定義for…of在對(duì)象上的行為 new {var next:function()return{value:v++,done:v>10}}conolelog(v);//012 器,之后我們就可以在forof中愉快地使用這個(gè)o對(duì)象啦。這些標(biāo)準(zhǔn)中被稱為“眾所周知”的Symbol,也構(gòu)成了語言的一類接口形式。它們?cè)试S編寫與語言結(jié)合更緊密的API。在JavaScript中,對(duì)象的定義是“屬性的集合”。屬性分為數(shù)據(jù)屬性和器屬性,二者都是key-value結(jié)構(gòu),keySymbol類型。因?yàn)镃++和Java的成功,在這兩門語言中,每個(gè)類都是一個(gè)類型,二者幾乎等同,以至于很多的 ,都在對(duì) 個(gè) 戚 它們 到3與newNumber(3)是完不同的值,它們 個(gè)是Number Number、String和Boolean,個(gè)構(gòu)造器是兩用的,當(dāng)跟new搭配時(shí),它們產(chǎn)對(duì)象,當(dāng)直接 Symbol數(shù)比較特殊,直接用new調(diào)用 拋出錯(cuò)誤,但它仍然是Symbol對(duì)象的構(gòu)造JavaScript語言設(shè)計(jì)上試圖模糊對(duì)象和基 甚至我們?cè)谠蜕咸砑臃椒?,都可以?yīng)用于基本類型,比如以下代碼,在Symbol原型上添加 vara= o() o,有 開頭的問題,答案就是運(yùn)算符提供 類型講 ,我們來介 個(gè)現(xiàn) 轉(zhuǎn) 些代 的判其中最為臭名昭著的是JS中的“==”運(yùn)算,因?yàn)樵噲D實(shí)現(xiàn)跨類型的比較,它的規(guī)則復(fù)雜到幾乎沒 需要注意的是,parseIntparseFloat并不使用這個(gè)轉(zhuǎn)換,所以支持的語法跟這里不盡相同。在一些古老的瀏覽器環(huán)境中,It還支持開頭的數(shù)字作為進(jìn)制前綴,這是很多錯(cuò)誤的來源。所以在任何環(huán)境下,都建議傳入It的第二個(gè)參數(shù),而t則直接把原字符串作為十進(jìn)制來解析,它不會(huì)引入任何的其他進(jìn)制。具體的算法,你可以去參考t裝箱前文提到,全局的Symbolnewinstanceof可以看到,它是Symbol這個(gè)類的實(shí)例,我們找它的constructor也是等于Symbol的,varvarsymbolObject=(function(){returnthis;console.log(typeofsymbolObject);//object使用內(nèi)置的Object函數(shù),我們可以在JavaScript代碼中顯式調(diào)用裝箱能varvarsymbolObject=varvarsymbolObject=console.log(Ototype.toString.call(symbolObject));//[object可以準(zhǔn)確識(shí)別對(duì)象對(duì)應(yīng)的基本類型的方法,它比instanceof更加準(zhǔn)確。但需要注意的是,call本身會(huì)產(chǎn)生裝箱操作,所以需要配合typeof來區(qū)分基本類型還是對(duì)象類拆箱StringNumber的轉(zhuǎn)換都遵循“先拆箱再轉(zhuǎn)換”的規(guī)則。通過拆箱轉(zhuǎn)換,把對(duì)象變成基本類型,再從基本類型轉(zhuǎn)換為對(duì)應(yīng)的StringNumber。不存在,或者沒有返回基本類型,則會(huì)產(chǎn)生類型錯(cuò)誤TypeError。 toString:()>{conolelog("toString");return}o*//////String的拆箱轉(zhuǎn)換會(huì)優(yōu)先調(diào)用toString。我們把剛才的運(yùn)算從o*2o,那么你會(huì)看到調(diào) toString:()>{conolelog("toString");return}o+//////在ES6之后,還允許對(duì)象通過顯式指定@@toPrimitiveSymbol來覆蓋原有的行為varvaro=}o[Symbol.toPrimitive]=()=>{console.log("toPrimitive");return console.log(o+// JavaScript運(yùn)行時(shí)的類型系統(tǒng)。這里回顧一下今天講解的知識(shí)點(diǎn)。Set:主要用于解釋字符集等 PropertyDescriptor:用于描述對(duì)象的屬性。DataBlock:用于描述二進(jìn)制數(shù)據(jù)。JavaScript執(zhí)行時(shí)所需要的數(shù)最后我們留一個(gè)實(shí)踐問題,如果我們不用原生的Number和parseInt,用JS代碼實(shí)現(xiàn)StringNumber的轉(zhuǎn)換,該怎么做呢?請(qǐng)你把自己的代碼留言給我吧補(bǔ)充事實(shí)上,“類型”JavaScript中是一個(gè)有爭(zhēng)議的概念。一方面,標(biāo)準(zhǔn)中規(guī)定了運(yùn)行時(shí)數(shù)據(jù)類型;另一方面,JS語言中提供了typeof這樣的運(yùn)算,用來返回操作數(shù)的類型,但typeof的運(yùn)算結(jié) ,我們應(yīng)該按照typeof的結(jié)果去理解語言的類型系統(tǒng)。但JS之父本人也在多個(gè)場(chǎng)合表示過,typeof的設(shè)計(jì)是有缺陷的,只是現(xiàn)在已經(jīng)錯(cuò)過了修正精選留 undefined在全局環(huán)境沒法被賦值,在局部環(huán)境是可以被賦值的奔跑的兔 我發(fā)現(xiàn)有很多同學(xué)都在糾結(jié)undefined問題,為什么不去讀一下mdn呢前兩段寫的很明確在ES5之前的時(shí)候,undefined是可以被賦值的。在現(xiàn)代瀏覽器當(dāng)中已經(jīng)把undefined設(shè)置為 老師,對(duì)于Number類型有一個(gè)疑惑,您舉列的console.log(0.1+0.2==0.3)為false,我就另測(cè)試了了一下console.log(0.3+0.2==0.5)就為true了呢,試試其他都是true,為啥只有是否等懸 老師,雖然undefined可以被賦值,但是發(fā)現(xiàn)對(duì)他賦值是沒有意此處的a的值還是undefined,并不是啊 varnum=+"1000"大9老師,最后小結(jié)圖是不是有些問題function 字符串類型轉(zhuǎn)換成Number類型,可以使用算術(shù)運(yùn)算符,運(yùn)算時(shí)進(jìn)行隱式轉(zhuǎn)換。如下""-""*""/庖 猜測(cè)老師喜歡擼貓 實(shí)驗(yàn)證明undefined被賦值后再打印,還是undefined。實(shí)驗(yàn)環(huán)境mac1014.2于江水 實(shí)現(xiàn)字符串轉(zhuǎn)數(shù)字的同學(xué),不要單純考慮這個(gè)字符串一定全是數(shù)字而用運(yùn)算符來實(shí)現(xiàn)。放在實(shí)際場(chǎng)景會(huì)出現(xiàn)大量?!靶枰⒁獾氖牵琾arseInt和parseFloat并不使用這個(gè)轉(zhuǎn)換,所以支持的語法跟這里不盡。使用是不是打錯(cuò)了?應(yīng)該是適用代碼Object((Symbol(‘a(chǎn)’))要么左邊多了括號(hào)要么右邊少希望類似裝箱轉(zhuǎn)換、拆箱轉(zhuǎn)換這樣的專屬名詞如果有英文單詞可以補(bǔ)充下方便檢索信 null的類型是object,這是由于歷史原因造成的。1995年的JavaScript語言第一版,只設(shè)計(jì)了五種數(shù)據(jù)類型(對(duì)象、整數(shù)、浮點(diǎn)數(shù)、字符串和布爾值),沒考慮null,只把它當(dāng)作object的一種特殊值。后來null獨(dú)立出來,作為一種單獨(dú)的數(shù)據(jù)類型,為了兼容以前的代碼,typeofnull返回object就沒法改變了。來自 Solar JavaScript七種數(shù)據(jù)類型數(shù)據(jù)類型轉(zhuǎn)數(shù)據(jù)類型檢貌似留言不能直接發(fā)呢,那我放一個(gè)語雀上傳后的地址吧,是看完這篇課程的簡(jiǎn)要總 O 數(shù)值轉(zhuǎn)換轉(zhuǎn)32位整型,可以用位運(yùn)算實(shí)現(xiàn),比如a|0,a
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 2024適用型貸款利息合同書樣本版
- 2025年度彩色印刷設(shè)備升級(jí)改造合同3篇
- 2024年度城市基礎(chǔ)設(shè)施建設(shè)項(xiàng)目合同
- 二零二五年度綠色能源開發(fā)項(xiàng)目承包合同范本3篇
- 2025年度航空航天零部件定制設(shè)計(jì)與運(yùn)輸服務(wù)合同3篇
- 2024物業(yè)委托經(jīng)營(yíng)管理合同
- 2025年水果種植基地與冷鏈物流公司合作合同3篇
- 二零二五版科技型企業(yè)貸款合同中的物權(quán)擔(dān)保與研發(fā)成果3篇
- 2025年蔬菜廢棄物資源化利用合作合同3篇
- 二零二五年版市政工程招標(biāo)投標(biāo)合同模板3篇
- 物業(yè)民法典知識(shí)培訓(xùn)課件
- 2023年初中畢業(yè)生信息技術(shù)中考知識(shí)點(diǎn)詳解
- 2024-2025學(xué)年山東省德州市高中五校高二上學(xué)期期中考試地理試題(解析版)
- 《萬方數(shù)據(jù)資源介紹》課件
- 麻風(fēng)病病情分析
- 《急診科建設(shè)與設(shè)備配置標(biāo)準(zhǔn)》
- 第一章-地震工程學(xué)概論
- TSGD7002-2023-壓力管道元件型式試驗(yàn)規(guī)則
- 2024年度家庭醫(yī)生簽約服務(wù)培訓(xùn)課件
- 建筑工地節(jié)前停工安全檢查表
- 了不起的狐貍爸爸-全文打印
評(píng)論
0/150
提交評(píng)論