ECMAScript 的語法大量借鑒了C及其他類C語言(如Java 和Perl)的語法。 1. 區分大小寫 2.標識符 2.1 第一個字元必須是一個字母、下劃線(_)或一個美元符號($); 2.2 其他字元可以是字母、下劃線、美元符號或數字 按照慣例,ECMAScript標識符採用駝峰大小寫格式,也 ...
ECMAScript 的語法大量借鑒了C及其他類C語言(如Java 和Perl)的語法。
1. 區分大小寫
2.標識符
2.1 第一個字元必須是一個字母、下劃線(_)或一個美元符號($);
2.2 其他字元可以是字母、下劃線、美元符號或數字
按照慣例,ECMAScript標識符採用駝峰大小寫格式,也就是第一個字母小寫,剩下的每個單詞的首字母大寫。
3. 註釋
與C語言同
// 單行註釋
/*只是一個多行
*註釋
*/
4. 嚴格模式 “use strict”
5. 語句 以一個分號結尾;如果省略分號,則由解釋器確定語句的結尾,雖然語句結尾的分號不是必須的,但建議任何時候都不要省略它。
6. 關鍵字和保留字
break do instanceof typeof case else new var catch finally return void continue for switch while debugger* function this with default if throw delete in try abstract enum int short boolean export interface static byte extends long super char final native synchronized class float package throws const goto private transient debugger implements protected volatile double import public
7.變數定義
var message="hi";
var value=1.0;
8.數據類型
5種基本數據類型:Undefined,Null,Boolean,Number,String,還有一種複雜數據類型Object
ECMAScript不支持任何創建自定義類型的機制,二所有值最終都將是上述6種數據類型之一。
typeof 操作符
var message="hello"; console.log(typeof(message)); -->string
var value=100.9; console.log(typeof(value)); -->number
undefined 類型, 未經初始化的值預設都會取得undefined的值。
null類型,使用typeof 操作返回Object
Boolean類型
Number類型
Number.MAX_VALUE, Numer.NEGATIVE_INFINITY,Number.POSITIVE_INFINITY
NaN (Not a Numebr 非數值)
Number()函數轉換規則:
a。如果是Boolean值,true和false分別被轉化為1和0
b。如果是數字值,只是簡單的傳入和返回
c。如果是null值,返回0
d。如果是undefined,返回NaN
e。如果是字元串,會做類似C語言的轉換,轉換不成功,返回NaN
f。如果是對象,則調用對象的valueOf()方法,然後依據前面的規則轉換返回的值。如果轉換的結果是NaN,則調用對象的toSring()方法,然後再次依照前面的規則轉換返回的字元串值。
Object類型
var o=new Object();
如果不給構造函數傳遞參數,可以省略後面的一對圓括弧,如 var o=new object;
Object的每個實例都具有下列屬性和方法。
constructor, hasOwnProperty(propertyName), isPrototypeOf(object), propertyIsEnumerable(propertyName),toLocaleString, toString,valueOf.
操作符 ++, --, +, - , *,/, %, &, | , ~ , << , >>, >>>
布爾操作符
!,&&,||
關係操作符
<,>,<=,>=, ==,!=,===,!==
語句:
if (contition) statement1 else statement2
if (condition1) statement1
else f (condition2)
statement2
else statement3
do{ statement
} while (expression);
while (expression) statement;
for (initialization ;expression; post-loop-expression) statement;
for (property in expression) statement;
建議在使用for-in迴圈前,先檢測確認該對象的值不是null或undefined。
label語句: 使用label語句可以在代碼中添加標簽,以便將來使用。
label: statement;
break和continue 與C語言同,在迴圈體中控制代碼執行。
with 語句,主要目的是為了簡化多次編寫同一個對象的工作。(嚴格模式下不允許使用with語句)
with (expression) statement
var qs=location.search.substring(1);
var hostname=location.hostname;
var url=location.href;
上面的代碼都包含location對象,如果使用swith語句,可以把上面的代碼改寫為如下所示的代碼:
with (location) {
var gs=search.substring(1);
var hostname=hostname;
var url=href;
}
switch語句: 與C語言同,但是在JS中,可以在switch中使用任何數據類型。
函數
function functionName (arg0,arg1,...,argN) { statements; } //e.g. function sayHi (name,message) { alert ("hello "+ name +","+ message); }
可以向JS函數傳遞任意數量的參數,並且可以通過arguments對象來訪問這些參數。
由於不存在函數簽名的特性,JS函數不能重載。