使用 var (variable的縮寫)運算符聲明變量。java
能夠用一個var語句定義兩個或多個變量:正則表達式
var test1 = "hi", test2 = "hello";
變量命名規則:數組
著名的變量命名規則:函數
var MyTestValue = 0, MySecondValue = "hi";
var MyTestValue = 0, MySecondValue = "hi";
var iMyTestValue = 0, sMySecondValue = "hi";
能夠這樣命名:性能
類型 | 前綴 | 示例 |
---|---|---|
數組 | a | aValues |
布爾型 | b | bFound |
浮點型(數字) | f | fValue |
函數 | fn | fnMethod |
整型(數字) | i | iValue |
對象 | o | oType |
正則表達式 | re | rePattern |
字符串 | s | sValue |
變型(能夠是任何類型) | v | vValue |
ECMA-262定義了ECMAScript支持的一套關鍵字(keyword)。根據規定,關鍵字是保留的,不能用做變量名或函數名。this
break case catch continue default delete do else finally for function if in instanceof new return switch this throw try typeof var void while with
ECMA-262定義了ECMAScript支持的一套保留字(reserved word)。spa
保留字在某種意思上是爲未來的關鍵字而保留的單詞。所以保留字不能被用做變量名或函數名。debug
abstract boolean byte char class const debugger double enum export extends final float goto implements import int interface long native package private protected public short static super synchronized throws transient volatile
在ECMAScript中,變量能夠存在兩種類型的值,即原始值和引用值。設計
爲變量賦值時,ECMAScript 的解釋程序必須判斷該值是原始類型,仍是引用類型。要實現這一點,解釋程序則需嘗試判斷該值是否爲 ECMAScript 的原始類型之一,即 Undefined、Null、Boolean、Number和String型。因爲這些原始類型佔據的空間是固定的,因此可將他們存儲在較小的內存區域 - 棧中。這樣存儲便於迅速查尋變量的值。3d
在許多語言中,字符串都被看做引用類型,而非原始類型,由於字符串的長度是可變的。ECMAScript打破了這一傳統。
若是一個值是引用類型的,那麼它的存儲空間將從堆中分配。因爲引用值的大小會改變,因此不能把它放在棧中,不然會下降變量查尋的速度。相反,放在變量的棧空間中的值是該對象存儲在堆中的地址。地址的大小是固定的,因此把它存儲在棧中對變量性能無任何負面影響。
ECMAScript有5種原始類型(primitive type),即Undefined、Null、Boolean、Number和String。
1. typeof 運算符
對變量或值調用typeof運算符將返回下列值之一:
2. Null 類型
值undefined其實是從值null派生來的,所以ECMAScript把它們定義爲相等的。
alert(null == undefined); //輸出 "true"
儘管這兩個值相等,但它們的含義不一樣。undefined是聲明瞭變量但未對其初始化時賦予該變量的值,null則用於表示還沒有存在的對象。
若是函數或方法要返回的是對象,那麼找不到該對象時,返回的一般是null。
3. 科學計數法
對於很是大或很是小的數,能夠用科學計數法表示浮點數,能夠把一個數表示爲數字(包括十進制數字)加e(或 E),後面加乘以10的倍數。
//符號表示的是數56180000。把科學計數法轉化成計算式就能夠獲得該值:5.618 x 107。 var fNum = 5.618e7
引用類型一般叫作類(class),也就是說,遇到引用值,所處理的就是對象。在ECMA-262中根本沒有出現「類」這個詞。ECMAScript定義了「對象定義」,邏輯上等價於其餘程序設計語言中的類。其實就是咱們常說的「對象」。
1. Object對象
對象是由 new 運算符加上要實例化的對象的名字建立的。例如:
var o = new Object();
當有不止一個參數時,ECMAScript要求使用括號。若是沒有參數,括號能夠省略(建議不要使用):
var o = new Object;
Object對象具備如下屬性:
Object對象具備如下經常使用方法:
2. Boolean對象
在ECMAScript中不多使用Boolean對象,即便使用,也不易理解。
問題一般出如今Boolean表達式中使用Boolean對象時。例如:
var oFalseObject = new Boolean(false); var bResult = oFalseObject && true; //輸出 true
建議仍是使用Boolean原始值。
3. Number對象
Number對象是Number原始類型的引用類型。要建立Number對象,採用以下代碼:
var oNumberObject = new Number(68);
要獲得數字對象的Number原始值,只須要使用valueOf()方法:
var iNumber = oNumberObject.valueOf();
(1) toFixed() 方法
toFixed()方法返回的是具備指定位數小數的數字的字符串表示。例如:
var oNumberObject = new Number(68); alert(oNumberObject.toFixed(2)); //輸出 "68.00"
toFixed() 方法能表示具備0到20位小數的數字,超過這個範圍的值會引起錯誤。
(2) toExponential() 方法
返回的是用科學計數法表示的數字的字符串形式。
toExponential()方法也有一個參數,指定要輸出的小數的位數。
var oNumberObject = new Number(68); alert(oNumberObject.toExponential(1)); //輸出 "6.8e+1
(3) toPrecision() 方法
根據最有意義的形式來返回數字的預約形式或指數形式。它有一個參數,即用於表示數的數字總數(不包括指數)。
var oNumberObject = new Number(68); alert(oNumberObject.toPrecision(1)); //輸出 "7e+1"
toPrecision()方法會對數進行舍入。
var oNumberObject = new Number(68); alert(oNumberObject.toPrecision(2)); //輸出 "68" var oNumberObject = new Number(68); alert(oNumberObject.toPrecision(3)); //輸出 "68.0"
String對象是String原始類型的對象表示法。
var oStringObject = new String("hello world");
String對象的valueOf()方法和toString()方法都會返回String類型的原始值。
1. toLowerCase()、toLocaleLowerCase()、toUpperCase() 和 toLocaleUpperCase()
toLowerCase()和toUpperCase()方法是原始的,是以java.lang.String中相同方法爲原型實現的。
toLocaleLowerCase()和toLocaleUpperCase()方法是基於特定的區域實現的。
String對象有不少的方法,後面咱們再詳細地介紹。
2. instanceof 運算符
在使用typeof運算符時採用引用類型存儲值會出現一個問題,不管引用的是什麼類型的對象,它都返回"object"。ECMAScript引入了另外一個Java運算符instanceof來解決這個問題。
instanceof運算符與typeof運算符類似,用於識別正在處理的對象的類型。與typeof方法不一樣的是,instanceof方法要求開發者明確地確認對象爲某特定類型。
var oStringObject = new String("hello world"); alert(oStringObject instanceof String); //輸出 "true"