## 一、語句和語句塊
1、語句:在Javascript中,分號或者換行均可作為Javascript的語句終止符,所以省略分號時,解釋引擎會自動在行末尾添加";",但是,建議手動添加分號,有利于代碼的閱讀。
2、語句塊:在Javascript中,語句塊的界定符是:{ ?statement;}
~~~
var i = 1;
{
i = 2;
var j = 1;
}
alert(i); //輸出2
alert(j); //輸出1
~~~
在JS中,不認為語句塊是一個新范圍,只有函數才創建新范圍。上述的i和j在同一個作用域范圍
## 二、for...in循環:遍歷對象的屬性或數組元素,但不能迭代方法。此外,靜態成員和部分屬性(非對象原型鏈中的屬性)也不能迭代。
2.1語法格式:
~~~
for(variable in object){
statements;
} ? ? ?
~~~
variable是聲明的變量,代表對象的屬性名,object是需要被遍歷的對象。
~~~
var myObj = {name:"JavaScript",
age:11,belonging:"ECMA"
}
for(var prop in myObj)
{
document.write("myObj"+prop+"="+myObj[prop]+"<br/>");//
}
~~~
2.2注意事項
2.2.1不會將相同的屬性迭代兩次。若child有原型parent,二者均有prop屬性,則for-in循環中的prop來自child,忽略parent中的prop屬性。
2.2.2若在類中(類內)定義一個for-in循環,則實例成員對該循環不可用,靜態成員可用;若在代碼中(類外)定義一個for-in循環,則實例成員可用,靜態成員不可用。
## 三、for each...in循環:遍歷對象的屬性值,語法格式和for-in循環差不多,但是該語法是JS1.6引入,且只在FF2及以上版本可用。
## 四、標簽語句:用于提供一個標識符,用于直接跳轉到標識符處執行,僅有break和continue語句可以使用。
4.1語法格式:label:statements;
label是一個符合JS規則的合法標識符,statements可以是一條語句,也可以是一個語句塊。
4.2示例
~~~
foo:
for(var i = 1; i < 10; i++)
{
if(i == 5)
break foo;
document.write(i);
}
document.write("end"); //當i==5時,即跳出循環,執行此語句
~~~
## 五:with語句:方便引用對象的方法和屬性
~~~
with(object)
{
statements;
}
~~~
~~~
var now = new Date();
with(now)
{
document.write(getDay());
document.write(getMonth+1);
}
//未使用with
document.write(now.getDay());
document.write(now.getMonth+1);
~~~
- 前言
- 一
- 二:變量
- 三:數據運算
- 四:流程控制
- 五:內建的全局函數
- 六:自定義函數
- 七:面向對象編程(OOP)
- 八:靜態成員、靜態類、枚舉、重載和覆蓋
- 九:原型鏈本質論
- 十:ECMAScript 5 增強的對象模型
- 十一:處理字符串---String類和正則表達式
- 十二:數組、多維數組和符合數組(哈希映射)
- 十三:處理日期和時間
- 十四:JavaScript內建類
- 十五:BOM之源---window對象
- 十六:BOM之源---BOM基本應用
- 十七:BOM新成就(1)--客戶端存儲數據(Storage實現)
- 十八:BOM新成就(1)--客戶端存儲數據(Web SQL DataBase實現)
- 十九--HTML5 DOM新標準---處理文檔元信息和管理交互能力
- 二十---XMLHttpRequest和AJAX解決方案