ECMAScript 文法 筆記

來源:互聯網
上載者:User

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

    聯繫我們

    該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

    如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

    A Free Trial That Lets You Build Big!

    Start building with 50+ products and up to 12 months usage for Elastic Compute Service

    • Sales Support

      1 on 1 presale consultation

    • After-Sales Support

      24/7 Technical Support 6 Free Tickets per Quarter Faster Response

    • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.