首頁 > web前端 > js教程 > JavaScript的型別、值、變數小結_javascript技巧

JavaScript的型別、值、變數小結_javascript技巧

WBOY
發布: 2016-05-16 15:50:57
原創
1066 人瀏覽過

前言: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”,但它並不包含其他有用的方法。

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

相關標籤:
來源:php.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板