摘要:第二章值的數(shù)組不需要預(yù)設(shè)數(shù)組大小,可以直接向數(shù)組添加任何類型的值,如果形成了稀疏數(shù)組,那么未賦值的部分將會是。某些不是數(shù)組的對象,如果其有屬性,就是類數(shù)組,例如元素列表,,通常用這個將其轉(zhuǎn)化為數(shù)組,而為我們提供了一種新途徑。
從名字上看可能會覺得JS應(yīng)該和Java是有很緊密的聯(lián)系的吧,實際上它們是兩種完全不同的語言,JS是ECMAScript的瀏覽器規(guī)范,是一種弱類型的語言,不同于Java這種強類型語言。JS簡單易用,可是它的語言機制又是十分復(fù)雜的,我們通常對它是一知半解,深入理解其運行機制和原理,才能得心應(yīng)手,避免各種令人抓狂問題,例如回調(diào)地獄等。
第一章 類型
JS有七大類型,string,number,boolean,object,null,undefine,symbol(es6新增),除了object,其他都是基本類型,可以用typeof運算符查看其對應(yīng)類型。除了typeof null === “object”//true,以外,其他六種類型都有同名的字符串值一一對應(yīng),我們常用的數(shù)組和函數(shù),他們的typeof分別是”object”和”function”,他們都有l(wèi)ength屬性,數(shù)組的length屬性是元素的個數(shù),而函數(shù)的length屬性則是參數(shù)的個數(shù)。最容易混淆的是undefined和undecleare的情況,前者是已經(jīng)定義了的但沒賦值的變量,而后者則是從沒定義過的變量,雖然在typeof中都返回undefined,但是這個區(qū)別還是值得注意。
第二章 值
JS的數(shù)組不需要預(yù)設(shè)數(shù)組大小,可以直接向數(shù)組添加任何類型的值,如果形成了稀疏數(shù)組,那么未賦值的部分將會是undefined。與數(shù)組有關(guān)的方法有push,pop,shift,unshift,sort,reverse,every,some,filter,forEach,map,concat,slice,splice等。某些不是數(shù)組的對象,如果其有l(wèi)ength屬性,就是類數(shù)組,例如DOM元素列表,arguments,通常用[].slice.call()這個將其轉(zhuǎn)化為數(shù)組,而es6為我們提供了一種新途徑——Array.from()。字符串也是類數(shù)組,有l(wèi)ength屬性,也有indexof和concat等方法,和數(shù)組很相似,在JS中字符串是不可變的,而數(shù)組是可變的,不過我們可以借用數(shù)組的非變更方法來處理字符串。
JS中只有一種數(shù)值類型——number,使用64位二進(jìn)制的雙精度格式,數(shù)字最前面的0和小數(shù)點中最后的0是可以省略的,特別大或者特別小的數(shù)字用指數(shù)形式表示,常用的方法有tofixed(X)——將數(shù)字保留X位小數(shù),不足用0補齊,toPresicion(X)——保留X位有效數(shù)字。二進(jìn)制浮點數(shù)最大的問題就是0.1和0.2并不是十分精確,因此有0.1+0.2==0.3//false,最常見的判斷小數(shù)相等的做法是設(shè)置一個誤差范圍值(機器精度),對JS來說是2^-52,最大安全整數(shù)是2^53-1,我們可以用a|0來將變量a中的數(shù)值轉(zhuǎn)換為32位有符號整數(shù)。數(shù)字類型中有幾個特殊的值我們需要注意,NaN——不是一個數(shù)字,可以理解為無效值,它和本身不相等,即NaN===NaN//false,無窮數(shù)——+Infinity和-Infinity,計算結(jié)果溢出時出現(xiàn)。
簡單的基本類型通過值復(fù)制來賦值或者傳遞,而復(fù)合值(對象等)則會通過引用復(fù)制來復(fù)制或傳遞,值復(fù)制相當(dāng)于是處理原值的一個副本,而引用復(fù)制相當(dāng)于是將原值的地址傳給了新的引用。
文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請注明本文地址:http://systransis.cn/yun/93397.html
摘要:本書屬于基礎(chǔ)類書籍,會有比較多的基礎(chǔ)知識,所以這里僅記錄平常不怎么容易注意到的知識點,不會全記,供大家和自己翻閱不錯,下冊的知識點就這么少,非常不推介看下冊上中下三本的讀書筆記你不知道的上讀書筆記你不知道的中讀書筆記你不知道的下讀書筆記第三 本書屬于基礎(chǔ)類書籍,會有比較多的基礎(chǔ)知識,所以這里僅記錄平常不怎么容易注意到的知識點,不會全記,供大家和自己翻閱; 不錯,下冊的知識點就這么少,非...
摘要:關(guān)于兩個專業(yè)術(shù)語的討論起自對你不知道的一書的閱讀學(xué)習(xí)。遇到,編譯器會詢問作用域是否已經(jīng)有一個該名稱的變量存在于同一個作用域的集合中。摘錄來自你不知道的。 JS 編譯之 LHS RHS 一、前言 最近和朋友聊技術(shù)的時候,聊到 LHS RHS,我竟然沒聽說過 沒聽說過。。。 于是成功引起了我的好奇心。 關(guān)于兩個專業(yè)術(shù)語的討論起自對《你不知道的JavaScript》一書的閱讀學(xué)習(xí)。 二、編譯...
摘要:但是如果非全局的變量如果被遮蔽了,無論如何都無法被訪問到。但是如果引擎在代碼中找到,就會完全不做任何優(yōu)化。結(jié)構(gòu)的分句中具有塊級作用域。第四章提升編譯器函數(shù)聲明會被提升,而函數(shù)表達(dá)式不會被提升。 本書屬于基礎(chǔ)類書籍,會有比較多的基礎(chǔ)知識,所以這里僅記錄平常不怎么容易注意到的知識點,不會全記,供大家和自己翻閱; 上中下三本的讀書筆記: 《你不知道的JavaScript》 (上) 讀書筆記...
摘要:如果是聲明中的第一個詞,那么就是一個函數(shù)聲明,否則就是一個函數(shù)表達(dá)式。給函數(shù)表達(dá)式指定一個函數(shù)名可以有效的解決以上問題。始終給函數(shù)表達(dá)式命名是一個最佳實踐。也有開發(fā)者干脆關(guān)閉了靜態(tài)檢查工具對重復(fù)變量名的檢查。 你不知道的JS(上卷)筆記 你不知道的 JavaScript JavaScript 既是一門充滿吸引力、簡單易用的語言,又是一門具有許多復(fù)雜微妙技術(shù)的語言,即使是經(jīng)驗豐富的 Ja...
摘要:你不知道的系列第一章類型類型一中的類型中的變量是不存在類型的,只有具體的值才有類型。 你不知道的JavaScript系列---第一章:類型 類型 一、JavaScript中的類型 JavaScript中的變量是不存在類型的,只有具體的值才有類型。 Js不像其他高級語言,如java等,聲明了一個int類型的變量,就必須存放int類型的值,Js中的變量可以存放其允許的所有類型的值,如: ...
下一篇:《你不知道的javascript》筆記_對象&原型 寫在前面 上一篇博客我們知道詞法作用域是由變量書寫的位置決定的,那this又是在哪里確定的呢?如何能夠精準(zhǔn)的判斷this的指向?這篇博客會逐條闡述 書中有這樣幾句話: this是在運行時進(jìn)行綁定的,并不是在編寫時綁定,它的上下文取決于函數(shù)調(diào)用時的各種條件this的綁定和函數(shù)聲明的位置沒有任何關(guān)系,只取決于函數(shù)的調(diào)用方式當(dāng)一個函數(shù)被調(diào)用時...
閱讀 3558·2021-11-08 13:15
閱讀 2115·2019-08-30 14:20
閱讀 1396·2019-08-28 18:08
閱讀 989·2019-08-28 17:51
閱讀 1496·2019-08-26 18:26
閱讀 2998·2019-08-26 13:56
閱讀 1494·2019-08-26 11:46
閱讀 2594·2019-08-23 14:22