DIV CSS 佈局教程網

 DIV+CSS佈局教程網 >> 網頁腳本 >> JavaScript入門知識 >> 關於JavaScript >> JavaScript的類型、值和變量小結
JavaScript的類型、值和變量小結
編輯:關於JavaScript     

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

  1 數字

  JavaScript中不區分整數值和浮點數值。JavaScript可以識別十進制整型直接量(所謂直接量,就是程序中直接使用的數據值),和16進制值(以0x或0X為前綴,那個是數字0不是字母o。想想如果是字母o的話,那一個十六進制值不成了一個標識符了嘛)。盡管ECMAScript標准不支持八進制直接量,但JavaScript的某些實現可以采用八進制形式表示整數(以數字0為前綴),筆者在自己電腦上的IE、Chrome、FF這三種浏覽器中使用八進制給一個變量賦值也都沒問題。不過在ECMAScript6的嚴格模式下,八進制直接量是明令禁止的。

  浮點型直接量有兩種寫法。①傳統的實數寫法:有整數部分、小數點和小數部分組成;②指數計數法:即在實數後跟字母e或E,後面跟正負號,其後再跟一個整型的指數。

   1.1 算術運算的溢出

  JavaScript中算術運算在溢出(overflow)、下溢(underflow)或被0整除時不會報錯。

  溢出:當運算結果超出了JavaScript所能表示的數字上限,結果為正無窮大Infinity或負無窮大-Infinity。無窮大值得行為特性也符合現實:基於它們的加、減、乘和除運算結果還是無窮大值(當然保留它們的正負號);下溢:當運算結果無限接近於零並比JavaScript能表示的最小值還小的時候發生的情形。這種情況下,將會返回0。當一個負數發生下溢時返回特殊值“負零”。負零和整零基本是相等的(甚至可以使用嚴格相等===來測試),除了作為除數之外:

var zero = 0;  //正零值
var negz = -0;  //負零值
zero === negz  //表達式返回值為true
1/zero === 1/negz  
//表達式返回值false,等價於判斷正無窮大和負無窮大是否嚴格相等

  被0整除會返回正無窮大或者負無窮大值。但0除以0會返回NaN(JavaScript預定義對象Number的NaN屬性的值)。返回NaN的有四種情況:①0除以0②無窮大除以無窮大③給任意負數作開方運算④算術運算符與不是數字或無法轉換為數字的操作數一起使用時。

  NaN值有一點特殊:它和任何值都不相等,包括自身。判斷一個變量x是否為NaN的兩種方法:①使用函數isNaN()②是使用x != x 判斷,當且僅當x為NaN時,表達式結果才為true。JavaScript中還有一個類似的函數isFinite(),在參數不是NaN、Infinity或-Infinity的時候返回true。

  1.2 二進制浮點數和四捨五入錯誤

  實數有無數個,但JavaScript通過浮點數的形式只能表示其中有限個數。也就是說,在JavaScript中使用實數的時候,常常只是一個真實值的一個近似表示。JavaScript采用了IEEE-754浮點數表示法,這是一種二進制表示法,可以精確的表示如1/2、1/8和1/1024、這樣的分數,但是十進制分數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位值得個數。JavaScript通過字符串類型來表示文本。注意:JavaScript中並沒有表示單個字符的“字符型”。要表示一個16位值,只需將其賦值給字符串變量即可。

  JavaScript采用UTF-16編碼的Unicode字符集,JavaScript字符串是由一組無符號的16位值組成的序列。那些不能表示為16位的Unicode字符則遵循UTF-16編碼規則——用兩個16位值組成一個序列(或稱作“代理項對”)表示。這意味著一個長度為2的JavaScript字符串有可能表示一個Unicode字符。注意:JavaScript定義的各式字符串的操作方法均作用於16位值,而非字符,且不會對代理項對做單獨處理。書看到這裡,又結合http://www.alloyteam.com/2013/12/js-calculate-the-number-of-bytes-occupied-by-a-string/上面所述,終於對Unicode字符集、UTF-8、UTF-16稍有理解。

  字符串的定界符可以是單引號或者雙引號。這兩種形式的定界符可以嵌套,但是不能多層嵌套(比如,雙引號可以包含單引號,這時單引號中不能再包含雙引號了)。正如上篇所說,一個字符串值可以拆分為數行,每行必須以反斜線(\)結束,這時反斜線和行結束符都不算是字符串內容,即字符串本身並非是多行,只是寫成了多行的形式。

  注意:①在JavaScript中字符串是固定不變的(除非重新賦值),類似replace()和toUpperCase()的方法都返回新字符串,原字符串本身並沒有變化;②字符串可以當做只讀數組,除了使用charAt()方法來查詢一個單一字符,也可以使用方括號的方式來訪問字符串中的單個字符(16位值),例如:

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

  2.2 轉義字符

轉義字符 含義 
\o NUL字符(\u0000)
\b 退格符(\u0008)
\t 水平制表符(\u0009)
\n 換行符(\u000A)
\v 垂直制表符(\u000B)
\f 換頁符(\u000C)
\r 回車符(\u000D)
\" 雙引號(\u0022)
\' 撇號或單引號(\u0027)
\\ 反斜線(\u005C)
\xXX 由兩位十六進制數XX指定的Latin-1字符
\uXXXX 由4位十六進制數XXXX指定的Unicode字符
                                                                                                                                                                                                                                                                                                                               
注意:如果"\"字符位於沒有在表中列出的字符前,則忽略"\"。比如,"\#"和"#"等價。別忘了反斜線還有一個作用就是多行字符串中每行結束處使用反斜線。   

  3 布爾值

  在JavaScript中的值都可以轉換為布爾值。其中,null、undefined、0、-0、NaN、""(空字符串),這6個值會被轉換成false,false和這六個值有時稱做“假值”;其他所有值,包括對象(數組)都會轉換成true,true和這些值相應的被稱做“真值”。注意:布爾值包含toString()方法,因此可以使用這個方法將字符串轉換成“true”或“false”,但它並不包含其他有用的方法。

以上所述就是本文的全部內容了,希望大家能夠喜歡。

XML學習教程| jQuery入門知識| AJAX入門| Dreamweaver教程| Fireworks入門知識| SEO技巧| SEO優化集錦|
Copyright © DIV+CSS佈局教程網 All Rights Reserved