【學習】ECMAScript 面向對象技術

參考:http://www.w3school.com.cn/js/pro_js_syntax.asp

 

ECMAScript 語法

區分大小寫

與 Java 一樣,變量、函數名、運算符以及其他一切東西都是區分大小寫的。

比如:

變量 test 與變量 TEST 是不同的。

變量是弱類型的

與 Java 和 C 不同,ECMAScript 中的變量無特定的類型,定義變量時只用 var 運算符,可以將它初始化爲任意值。

因此,可以隨時改變變量所存數據的類型(儘量避免這樣做)。

例子

var color = "red";
var num = 25;
var visible = true;

每行結尾的分號可有可無

Java、C 和 Perl 都要求每行代碼以分號(;)結束才符合語法。

ECMAScript 則允許開發者自行決定是否以分號結束一行代碼。如果沒有分號,ECMAScript 就把折行代碼的結尾看做該語句的結尾(與 Visual Basic 和 VBScript 相似),前提是這樣沒有破壞代碼的語義。

最好的代碼編寫習慣是總加入分號,因爲沒有分號,有些瀏覽器就不能正確運行,不過根據 ECMAScript 標準,下面兩行代碼都是正確的:

var test1 = "red"
var test2 = "blue";

註釋與 Java、C 和 PHP 語言的註釋相同

ECMAScript 借用了這些語言的註釋語法。

有兩種類型的註釋:

  • 單行註釋以雙斜槓開頭(//)
  • 多行註釋以單斜槓和星號開頭(/*),以星號和單斜槓結尾(*/)

括號表示代碼塊

從 Java 中借鑑的另一個概念是代碼塊。

代碼塊表示一系列應該按順序執行的語句,這些語句被封裝在左括號({)和右括號(})之間。

例如:

if (test1 == "red") {
    test1 = "blue";
    alert(test1);
}

ECMAScript 變量

聲明變量

var test = "hi";
var test1 = "hi", test2 = "hello";
var test = "hi", age = 25;
var test;

此外,與 Java 不同的還有變量可以存放不同類型的值。這是弱類型變量的優勢。例如,可以把變量初始化爲字符串類型的值,之後把它設置爲數字值,如下所示:

var test = "hi";
alert(test);
test = 55;
alert(test);

命名變量

變量名需要遵守兩條簡單的規則:

  • 第一個字符必須是字母、下劃線(_)或美元符號($)
  • 餘下的字符可以是下劃線、美元符號或任何字母或數字字符

下面的變量都是合法的:

var test;
var $test;
var $1;
var _$te$t2;

著名的變量命名規則

(總結):駝峯命名法

變量聲明不是必須的

ECMAScript 另一個有趣的方面(也是與大多數程序設計語言的主要區別),是在使用變量之前不必聲明。例如:

var sTest = "hello ";
sTest2 = sTest + "world";//通常建議sTest2 還是用var定義,以免混淆
alert(sTest2);

*注意:

ECMAScript 的解釋程序遇到未聲明過的標識符時,用該變量名創建一個全局變量,並將其初始化爲指定的值。

這是該語言的便利之處,不過如果不能緊密跟蹤變量,這樣做也很危險。最好的習慣是像使用其他程序設計語言一樣,總是聲明所有變量。

ECMAScript 原始值和引用值

*與Java有些類似

在 ECMAScript 中,變量可以存在兩種類型的值,即原始值和引用值。

原始值

存儲在棧(stack)中的簡單數據段,也就是說,它們的值直接存儲在變量訪問的位置。

引用值

存儲在堆(heap)中的對象,也就是說,存儲在變量處的值是一個指針(point),指向存儲對象的內存處。

原始類型

如前所述,ECMAScript 有 5 種原始類型(primitive type),即 Undefined、Null、Boolean、Number 和 String。

typeof 運算符來判斷一個值是否在某種類型的範圍內。可以用這種運算符判斷一個值是否表示一種原始類型:如果它是原始類型,還可以判斷它表示哪種原始類型。

對變量或值調用 typeof 運算符將返回下列值之一:

  • undefined - 如果變量是 Undefined 類型的
  • boolean - 如果變量是 Boolean 類型的
  • number - 如果變量是 Number 類型的
  • string - 如果變量是 String 類型的
  • object - 如果變量是一種引用類型或 Null 類型的

註釋:您也許會問,爲什麼 typeof 運算符對於 null 值會返回 "Object"。這實際上是 JavaScript 最初實現中的一個錯誤,然後被 ECMAScript 沿用了。現在,null 被認爲是對象的佔位符,從而解釋了這一矛盾,但從技術上來說,它仍然是原始值。

總結:null是原始類型不是引用類型,只是對象的佔位符

測試:

var oTemp;
alert(oTemp == undefined);//true

var oTemp;
alert(typeof oTemp); //輸出 "undefined"

下面的代碼將引發錯誤:

var oTemp;
alert(oTemp2 == undefined);

當函數無明確返回值時,返回的也是值 "undefined",如下所示:

function testFunc() {
}

alert(testFunc() == undefined);  //輸出 "true"

Null 類型

另一種只有一個值的類型是 Null,它只有一個專用值 null,即它的字面量。值 undefined 實際上是從值 null 派生來的,因此 ECMAScript 把它們定義爲相等的。

alert(null == undefined);  //輸出 "true

浮點數

要定義浮點值,必須包括小數點和小數點後的一位數字(例如,用 1.0 而不是 1)。這被看作浮點數字面量。例如:

var fNum = 5.0;

對於浮點字面量的有趣之處在於,用它進行計算前,真正存儲的是字符串。

 

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章