**Number類型:**
Number類型是JavaScript中最令人關注也是最復雜的類型了。這種類型使用IEEE754格式來表示整數和浮點數值(浮點數值在某些語言中也被稱為雙精度數值).為支持各種數值類型,ECMA-262定義了不同的數值字面量格式。
主要分為十進制,八進制,十六進制。除了以十進制表示外,整數還可以通過八進制(以8為基數)或十六進制(以16為基數)的自面值來表示,其中,八進制字面值的第一位必須是(0),然后是八進制數字序列(0-7)。如果字面值中的數值超出了范圍,那么前面的零將被忽略。請看下面的例子:
~~~
<script>
var intNum=10; //整數
var octalNum1=01010; //十進制的520
var octalNum2=018; //無效的八進制-解析為18;
</script>
~~~
浮點數值就是該數值必須包含一個小數點,并且小數點后面必須至少有一位數字。雖然小數點前面可以沒有整數,但是不推薦這種寫法;以下是浮點數值的幾個例子:
~~~
<script>
var floatNum1=1.1;
var floatNum2=0.1;
var floatNum3=.1; //有效但不推薦
</script>
~~~
由于保存浮點數值需要的內存空間是保存整數值的兩倍,因此ECMAScript會不失時機地將浮點數值轉換為整數值。顯然,如果小數點后面沒有跟任何數字,那么這個數值就可以被作為整數值來保存。同樣的,如果浮點數值本身表示的就是一個整數(如1.0),那么該值也會被轉換為整數;
對于那些極大或極小的數值,可以用E表示法(即科學計算法)表示的浮點數值。用E表示法表示的數值等于E前面的數值乘以10的指數次冪。也可以使用E表示法表示極小的數值。如0.000000000000000001,這個數值可以用1E-7。浮點數值的最高精度是17位小數,但在進行算術計算時其精確度遠遠不如整數。例如,0.1加0.2的結果不是0.3,
而是其他值。這個小小的誤差會導致我們無法測試特定的浮點數值。
例如
~~~
<script>
var f1=0.1;
var f2=0.2;
if(f1+f2==0.3){
alert("這是錯誤的");
}
</script>
~~~
如果我們非要去怎么判斷的話,也可以使用如下方法;
~~~
var r = (0.3 - (0.1 + 0.2)).toFixed(2);
// r 是 string 的 -0.00
// 然后可以再把它轉換成 float 類型
var f = parseFloat(r);
alert(f);
// 得到 f 是 -0,不過跟 0 是相等的 f === 0
~~~
**數值范圍:**
由于內存的限制,ECMAScript并不能保存世界上所有的數值。ECMAScript能夠表示的最小數值保存在Number.MIN_VALUE中-在大多數瀏覽器中,這個值是5e-324;能夠表示的最大數值保存在Number.MAX_VALUE中-在大多數瀏覽器中,這個值是1.7976931348623157e+308。如果某次計算的結果得出了一個超出改范圍的值,那么這個數值講會被自動轉換成特殊的Infinity值。具體來說就是正無窮和 負無窮;
**NaN:**
NaN,即非數值(Not a Number)是一個特殊的數值,這個數值用來表示本來要返回數值的操作數未返回數值的情況(這樣就不會拋出錯誤了)。例如在Java里面,任何數值除以0都會導致錯誤,從而停止代碼執行.但在javaScript中,任何數除以0都會返回Nan,因此不會影響其他代碼的執行。
NaN本身有兩個非同尋常的特點,首先,任何涉及NaN的操作都會返回NaN,其次任何值與Nan都不相等,包括NaN本身。
指對NaN的這兩個特點,JS定義了isNaN()函數。這個函數接受一個參數,改參數可以是任何類型,而函數會嘗試幫我們轉換為數值,例如字符串類型的"10",或boolean值都可以;不能轉換為數值會返回true;
**數值轉換:**
有三個函數可以把非數值的轉換為數值:Number(),parseInt,和parseFloat(),第一個函數可以用于任何數據類型,而另外兩個函數只適用于字符串。
**String類型:**
String類型用于表示由零或多個16位Unicode字符組成的字符序列,即字符串。字符串可以由雙引號(”)或單引號(')表示;
**1.字符字面量**
string數據類型包含一些特殊的字符字面量,也叫轉義序列,用于表示非打印字符,或者具有其他用途的字符。
\n ? ? ? ? ?換行; ?\t制表;\b空格;\r回車;\f進紙;\\斜杠;
**2.字符串的特點**
JS中的字符串是不可變得,也就是說,字符串一旦創建,它們的值就不能改變。要改變某個變量保存的字符串,首先要銷毀原來的字符串,然后再用另一個包含新值的字符串填充改變量;
**Object類型:**
JS中的對象其實就是一組數據和功能的集合。對象可以通過執行new操作符后跟要創建的對象類型的名稱來創建。而創建對象類型的實例并為其添加屬性和方法,就可以創建自定義方法;
var o=new Object();
這一點跟java很像,但是如果我們不給構造函數傳遞參數,也可以省略后面的那一對圓括號;
這個 函數最常用的就是valuyeOf()和toString()方法,這兩個返回對象的字符串,數值,或布爾值表示,通常與toString()方法的返回值相同。
- 前言
- javascript基礎與定義
- JavaScript變量
- JavaScript變量二(數據類型,Number,String,Object)
- JavaScript傳參的問題
- JavaScript基本類型和引用類型的值
- JavaScript執行環境及作用域
- JavaScript垃圾收集
- JavaScript和JQuery和angularjs操作select
- 搞對象前,你得先有對象
- JavaScript數組
- JavaScript運行原理解析
- Jquery和angularjs獲取check框選中的值小技巧
- JavaScript函數表達式
- JavaScript的閉包理解
- JavaScript BOM
- JavaScritpt的DOM初探之Node(一)
- 為什么說DOM操作很慢
- jQuery性能優化