欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

JavaScript的類型、值和變量小結(jié)

 更新時間:2015年07月09日 10:31:42   投稿:hebedich  
這篇文章主要介紹了JavaScript的類型、值和變量小結(jié)的相關(guān)資料,需要的朋友可以參考下

前言:JavaScript的數(shù)據(jù)類型分為兩類:原始類型和對象類型。5種原始類型:數(shù)字、字符串、布爾值、null(空)、undefined(未定義)。對象是屬性的集合,每個屬性都由“名/值對”(值可以是原始值、也可以是對象)構(gòu)成。三個比較特殊的對象:全局對象、數(shù)組、函數(shù)。JavaScript語言核心還定義了三種有用的類:日期(Date)類、正則(RegExp)類、錯誤(Error)類。

  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ù)之外:

var zero = 0;  //正零值
var negz = -0;  //負(fù)零值
zero === negz  //表達(dá)式返回值為true
1/zero === 1/negz  
//表達(dá)式返回值false,等價于判斷正無窮大和負(fù)無窮大是否嚴(yán)格相等

  被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等并不能精確的表示。例如:

var x = 0.3 -0.2;  //x=0.09999999999999998
var y = 0.2 - 0.1;  // y=0.1
x == y       //false
x == 0.1      //false
y == 0.1      //true
0.1 == 0.1     //true
var z = x + y;   //z=0.19999999999999998

  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位值),例如:

    s = "hello, world";
    s[0]   //=>"h"

  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)容了,希望大家能夠喜歡。

相關(guān)文章

  • 原生 JS Ajax,GET和POST 請求實例代碼

    原生 JS Ajax,GET和POST 請求實例代碼

    這篇文章主要介紹了原生 JS Ajax,GET和POST 請求實例代碼的相關(guān)資料,非常不錯具有參考借鑒價值,需要的朋友可以參考下
    2016-06-06
  • 關(guān)于javascript event flow 的一個bug詳解

    關(guān)于javascript event flow 的一個bug詳解

    描述了firefox,safari 有一個bug和DOM 3 規(guī)范不一致:在event.currentTarget等于event.target的時候(即event flow處于target phase時),會調(diào)用添加到currentTarget上的useCapture為true的listener
    2013-09-09
  • javascript框架設(shè)計讀書筆記之?dāng)?shù)組的擴(kuò)展與修復(fù)

    javascript框架設(shè)計讀書筆記之?dāng)?shù)組的擴(kuò)展與修復(fù)

    本文是司徒正美的《javascript框架設(shè)計》的第三章第2節(jié)的讀書筆記,本節(jié)主要介紹的是javascript數(shù)組的擴(kuò)展與修復(fù),本文則是選取了其中的重點部分展示給大家。
    2014-12-12
  • flexslider.js實現(xiàn)移動端輪播

    flexslider.js實現(xiàn)移動端輪播

    本文主要分享了flexslider.js實現(xiàn)移動端輪播的示例代碼,具有很好的參考價值,下面跟著小編一起來看下吧
    2017-02-02
  • 解決Layui 表格自適應(yīng)高度的問題

    解決Layui 表格自適應(yīng)高度的問題

    今天小編就為大家分享一篇解決Lyaui 表格自適應(yīng)高度的問題,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2019-11-11
  • 詳解小程序橫屏方案對比

    詳解小程序橫屏方案對比

    這篇文章主要介紹了小程序橫屏方案對比,實現(xiàn)橫屏的方案也有多種,但是每種方案都有一定的缺陷,恰巧最近也在橫屏方案上踩了不少坑,本文就一起來介紹一下吧
    2020-06-06
  • JavaScript小技巧整理篇(非常全)

    JavaScript小技巧整理篇(非常全)

    這篇文章主要介紹了JavaScript小技巧整理篇(非常全)的相關(guān)資料,需要的朋友可以參考下
    2016-01-01
  • JavaScript async&await方法中的異常處理方案

    JavaScript async&await方法中的異常處理方案

    在 async/await 方法中,可以使用 try-catch 塊來處理異常,通過使用 try-catch,可以捕獲異步操作中拋出的異常,并在 catch 塊中進(jìn)行適當(dāng)?shù)奶幚?本文給大家詳細(xì)介紹了async&await方法中異常如何處理,需要的朋友可以參考下
    2023-08-08
  • 小程序模實現(xiàn)糊搜索功能

    小程序模實現(xiàn)糊搜索功能

    這篇文章主要為大家詳細(xì)介紹了小程序模實現(xiàn)糊搜索功能,文中示例代碼介紹的非常詳細(xì),具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2022-06-06
  • Javascript基礎(chǔ)知識盲點總結(jié)之函數(shù)

    Javascript基礎(chǔ)知識盲點總結(jié)之函數(shù)

    函數(shù)是由事件驅(qū)動的或者當(dāng)它被調(diào)用時執(zhí)行的可重復(fù)使用的代碼塊。這篇文章主要介紹了Javascript基礎(chǔ)知識盲點總結(jié)之函數(shù)的相關(guān)資料
    2016-05-05

最新評論