1 數(shù)字
JavaScript中不區(qū)分整數(shù)值和浮點數(shù)值。JavaScript可以識別十進(jìn)制整型直接量(所謂直接量,就是程序中直接使用的數(shù)據(jù)值),和16進(jìn)制值(以0x或0X為前綴,那個是數(shù)字0不是字母o。想想如果是字母o的話,那一個十六進(jìn)制值不成了一個標(biāo)識符了嘛)。盡管ECMAScript標(biāo)準(zhǔn)不支持八進(jìn)制直接量,但JavaScript的某些實現(xiàn)可以采用八進(jìn)制形式表示整數(shù)(以數(shù)字0為前綴),筆者在自己電腦上的IE、Chrome、FF這三種瀏覽器中使用八進(jìn)制給一個變量賦值也都沒問題。不過在ECMAScript6的嚴(yán)格模式下,八進(jìn)制直接量是明令禁止的。
浮點型直接量有兩種寫法。①傳統(tǒng)的實數(shù)寫法:有整數(shù)部分、小數(shù)點和小數(shù)部分組成;②指數(shù)計數(shù)法:即在實數(shù)后跟字母e或E,后面跟正負(fù)號,其后再跟一個整型的指數(shù)。
1.1 算術(shù)運算的溢出
JavaScript中算術(shù)運算在溢出(overflow)、下溢(underflow)或被0整除時不會報錯。
溢出:當(dāng)運算結(jié)果超出了JavaScript所能表示的數(shù)字上限,結(jié)果為正無窮大Infinity或負(fù)無窮大-Infinity。無窮大值得行為特性也符合現(xiàn)實:基于它們的加、減、乘和除運算結(jié)果還是無窮大值(當(dāng)然保留它們的正負(fù)號);下溢:當(dāng)運算結(jié)果無限接近于零并比JavaScript能表示的最小值還小的時候發(fā)生的情形。這種情況下,將會返回0。當(dāng)一個負(fù)數(shù)發(fā)生下溢時返回特殊值“負(fù)零”。負(fù)零和整零基本是相等的(甚至可以使用嚴(yán)格相等===來測試),除了作為除數(shù)之外:
被0整除會返回正無窮大或者負(fù)無窮大值。但0除以0會返回NaN(JavaScript預(yù)定義對象Number的NaN屬性的值)。返回NaN的有四種情況:①0除以0②無窮大除以無窮大③給任意負(fù)數(shù)作開方運算④算術(shù)運算符與不是數(shù)字或無法轉(zhuǎn)換為數(shù)字的操作數(shù)一起使用時。
NaN值有一點特殊:它和任何值都不相等,包括自身。判斷一個變量x是否為NaN的兩種方法:①使用函數(shù)isNaN()②是使用x != x 判斷,當(dāng)且僅當(dāng)x為NaN時,表達(dá)式結(jié)果才為true。JavaScript中還有一個類似的函數(shù)isFinite(),在參數(shù)不是NaN、Infinity或-Infinity的時候返回true。
1.2 二進(jìn)制浮點數(shù)和四舍五入錯誤
實數(shù)有無數(shù)個,但JavaScript通過浮點數(shù)的形式只能表示其中有限個數(shù)。也就是說,在JavaScript中使用實數(shù)的時候,常常只是一個真實值的一個近似表示。JavaScript采用了IEEE-754浮點數(shù)表示法,這是一種二進(jìn)制表示法,可以精確的表示如1/2、1/8和1/1024、這樣的分?jǐn)?shù),但是十進(jìn)制分?jǐn)?shù)1/10、1/10等并不能精確的表示。例如:
2 文本
2.1 字符串、字符集
字符串(string)是一組由16位值組成的不可變的有序序列,每個字符通常來自于Unicode字符集。字符串的長度(length)是其所含16位值得個數(shù)。JavaScript通過字符串類型來表示文本。注意:JavaScript中并沒有表示單個字符的“字符型”。要表示一個16位值,只需將其賦值給字符串變量即可。
JavaScript采用UTF-16編碼的Unicode字符集,JavaScript字符串是由一組無符號的16位值組成的序列。那些不能表示為16位的Unicode字符則遵循UTF-16編碼規(guī)則——用兩個16位值組成一個序列(或稱作“代理項對”)表示。這意味著一個長度為2的JavaScript字符串有可能表示一個Unicode字符。注意:JavaScript定義的各式字符串的操作方法均作用于16位值,而非字符,且不會對代理項對做單獨處理。書看到這里,又結(jié)合http://www.alloyteam.com/2013/12/js-calculate-the-number-of-bytes-occupied-by-a-string/上面所述,終于對Unicode字符集、UTF-8、UTF-16稍有理解。
字符串的定界符可以是單引號或者雙引號。這兩種形式的定界符可以嵌套,但是不能多層嵌套(比如,雙引號可以包含單引號,這時單引號中不能再包含雙引號了)。正如上篇所說,一個字符串值可以拆分為數(shù)行,每行必須以反斜線(\)結(jié)束,這時反斜線和行結(jié)束符都不算是字符串內(nèi)容,即字符串本身并非是多行,只是寫成了多行的形式。
注意:①在JavaScript中字符串是固定不變的(除非重新賦值),類似replace()和toUpperCase()的方法都返回新字符串,原字符串本身并沒有變化;②字符串可以當(dāng)做只讀數(shù)組,除了使用charAt()方法來查詢一個單一字符,也可以使用方括號的方式來訪問字符串中的單個字符(16位值),例如:
2.2 轉(zhuǎn)義字符
轉(zhuǎn)義字符 含義
\o NUL字符(u0000)
\b 退格符(\u0008)
\t 水平制表符(\u0009)
\n 換行符(\u000A)
\v 垂直制表符(\u000B)
\f 換頁符(\u000C)
\r 回車符(\u000D)
\" 雙引號(\u0022)
\' 撇號或單引號(\u0027)
\\ 反斜線(\u005C)
\xXX 由兩位十六進(jìn)制數(shù)XX指定的Latin-1字符
\uXXXX 由4位十六進(jìn)制數(shù)XXXX指定的Unicode字符
注意:如果"\"字符位于沒有在表中列出的字符前,則忽略"\"。比如,"\#"和"#"等價。別忘了反斜線還有一個作用就是多行字符串中每行結(jié)束處使用反斜線。
3 布爾值
在JavaScript中的值都可以轉(zhuǎn)換為布爾值。其中,null、undefined、0、-0、NaN、""(空字符串),這6個值會被轉(zhuǎn)換成false,false和這六個值有時稱做“假值”;其他所有值,包括對象(數(shù)組)都會轉(zhuǎn)換成true,true和這些值相應(yīng)的被稱做“真值”。注意:布爾值包含toString()方法,因此可以使用這個方法將字符串轉(zhuǎn)換成“true”或“false”,但它并不包含其他有用的方法。
以上所述就是本文的全部內(nèi)容了,希望大家能夠喜歡。
聲明:本網(wǎng)頁內(nèi)容旨在傳播知識,若有侵權(quán)等問題請及時與本網(wǎng)聯(lián)系,我們將在第一時間刪除處理。TEL:177 7030 7066 E-MAIL:11247931@qq.com