參考: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;
對於浮點字面量的有趣之處在於,用它進行計算前,真正存儲的是字符串。