http://www.w3school.com.cn/js/pro_js_syntax.asp
主要跟c比較:
每行結尾的分號可有可無,最好的代碼編寫習慣是總加入分號
單行注釋以雙斜杠開頭(//)
多行注釋以單斜杠和星號開頭(/*),以星號和單斜杠結尾(*/)
使用 var 運算子聲明變數,ECMAScript 是弱類型
變數聲明不是必須的
ECMAScript 另一個有趣的方面(也是與大多數程式設計語言的主要區別),是在使用變數之前不必聲明。例如:
var sTest = "hello ";sTest2 = sTest + "world";alert(sTest2);
ECMAScript 的解釋程式遇到未聲明過的標識符時,用該變數名建立一個全域變數,並將其初始化為指定的值。最好的習慣是像使用其他程式設計語言一樣,總是聲明所有變數。
ECMA-262 定義了 ECMAScript 支援的一套保留字(reserved word)。
關鍵字(keyword)是保留的,不能用作變數名或函數名
保留字(reserved word)在某種意思上是為將來的關鍵字而保留的單詞。因此保留字不能被用作變數名或函數名。
ECMAScript 原始值和引用值 (很重要)
在 ECMAScript 中,變數可以存在兩種類型的值,即原始值和引用值。
-
原始值
-
儲存在棧(stack)中的簡單資料區段,也就是說,它們的值直接儲存在變數訪問的位置。
-
引用值
-
儲存在堆(heap)中的對象,也就是說,儲存在變數處的值是一個指標(point),指向儲存物件的記憶體處。
原始類型之一,即 Undefined、Null、Boolean、Number 和 String 型。由於這些原始類型佔據的空間是固定的,所以可將他們儲存在較小的記憶體地區 - 棧中。這樣儲存便於迅速查尋變數的值。
在許多語言中,字串都被看作參考型別,而非原始類型,因為字串的長度是可變的。ECMAScript 打破了這一傳統。
ECMAScript 有 5 種原始類型(primitive type),即 Undefined、Null、Boolean、Number 和 String。
Undefined 類型
如前所述,Undefined 類型只有一個值,即 undefined。當聲明的變數未初始化時,該變數的預設值是 undefined。
Null 類型
另一種只有一個值的類型是 Null,它只有一個專用值 null,即它的字面量。值 undefined 實際上是從值 null 派生來的,因此 ECMAScript 把它們定義為相等的。
Boolean 類型
Boolean 類型是 ECMAScript 中最常用的類型之一。它有兩個值 true 和 false (即兩個 Boolean 字面量)。
Number 類型
ECMA-262 中定義的最特殊的類型是 Number 類型。這種類型既可以表示 32 位的整數,還可以表示 64 位元的浮點數。
八位元和十六進位數
var iNum = 070; //070 等於十進位的 56
var iNum = 0x1f; //0x1f 等於十進位的 31
浮點數
var fNum = 5.0;
var fNum = 5.618e7
8-e17
特殊的 Number 值
Number.MAX_VALUE 和 Number.MIN_VALUE
當計算產生的數大於 Number.MAX_VALUE 時,它將被賦予值 Number.POSITIVE_INFINITY,意味著不再有數字值。同樣,產生的數值小於 Number.MIN_VALUE 的計算也會被賦予值 Number.NEGATIVE_INFINITY,也意味著不再有數字值。如果計算返回的是無窮大值,那麼產生的結果不能再用於其他計算。
事實上,有專門的值表示無窮大,(如你猜到的)即 Infinity。Number.POSITIVE_INFINITY 的值為 Infinity。Number.NEGATIVE_INFINITY 的值為 -Infinity。
由於無窮大數可以是正數也可以是負數,所以可用一個方法判斷一個數是否是有窮的(而不是單獨測試每個無窮數)。可以對任何數調用 isFinite() 方法,以確保該數不是無窮大。例如:
var iResult = iNum * some_really_large_number;if (isFinite(iResult)) { alert("finite");}else { alert("infinite");}
最後一個特殊值是 NaN,表示非數(Not a Number)。NaN 是個奇怪的特殊值。一般說來,這種情況發生在類型(String、Boolean 等)轉換失敗時。例如,要把單詞 blue 轉換成數值就會失敗,因為沒有與之等價的數值。與無窮大一樣,NaN 也不能用於算術計算。NaN 的另一個奇特之處在於,它與自身不相等,這意味著下面的代碼將返回 false:
alert(NaN == NaN); //輸出 "false"
出於這個原因,不推薦使用 NaN 值本身。函數 isNaN() 會做得相當好:
alert(isNaN("blue")); //輸出 "true"alert(isNaN("666")); //輸出 "false"
String 類型
String 類型的獨特之處在於,它是唯一沒有固定大小的原始類型。可以用字串儲存 0 或更多的 Unicode 字元,有 16 位整數表示(Unicode 是一種國際字元集,本教程後面將討論它)。
字串字面量是由雙引號(")或單引號(')聲明的。而 Java 則是用雙引號聲明字串,用單引號聲明字元。但是由於 ECMAScript 沒有字元類型,所以可使用這兩種標記法中的任何一種。例如,下面的兩行代碼都有效:
var sColor1 = "red"; var sColor2 = 'red';
ECMAScript 類型轉換
var iNum1 = parseInt("12345red"); //返回 12345
var iNum1 = parseInt("0xA"); //返回 10
var iNum1 = parseInt("56.9"); //返回 56
var iNum1 = parseInt("red"); //返回 NaN
String 對象的所有屬性和方法都可應用於 String 原始值上,因為它們是偽對象。
todo:
http://www.w3school.com.cn/js/pro_js_operators_unary.asp