語句
表示式語句
1.賦值語句是一類比較重要的表示式語句
greeting = "hello" + name;
i *= 3;複製程式碼
2.遞增運算子(++)和遞減運算子(--)
count++;複製程式碼
3.delete運算子的重要作用是刪除一個物件的屬性
delete o.x;複製程式碼
4.函式呼叫
alert(greeting);
window.close();複製程式碼
複合語句和空語句
1.複合語句
{
x = Math.PI;
cx = Math.cos(x);
console.log("cos(π)" + cx);
}複製程式碼
2.JavaScript中沒有塊級作用域,在語句塊中宣告的變數並不是語句塊私有的
3.當建立一個具有空迴圈體的迴圈時,空語句有時是很有用的。
//初始化一個陣列a
for(i = 0; i< a.length; a[i++] = 0) ;複製程式碼
使用了一個單獨的分號來表示一條空語句
宣告語句
var和function都是宣告語句,它們宣告或定義變數或函式
1.var
var i; //一個簡單的變數
var j = 0; //一個帶有初始值的變數
var p,q; //兩個變數
var greeting = "hello" + name; //更復雜的初始化表示式
var x = 2.34, y = Math.cos(0.75), r, theta; //很多變數
var x = 2, y = x * x; //第二個變數使用了第一個變數
var x =2, //更多變數
f = function(x){return x*x}, //每一個變數都獨佔一行
y = f(x);複製程式碼
(1).如果var語句出現在函式體內,那麼它定義的是一個區域性變數,其作用域就是這個函式。
(2).如果在頂層程式碼中使用var語句,它宣告的是全域性變數,全域性變數是全域性物件的屬性,var宣告的變數是無法通過delete刪除的。
(3).如果var語句中的變數沒有指定初始化表示式,那麼這個變數的值初始為undefined.
變數在宣告它們的指令碼或函式中都是有定義的,變數宣告語句會被"提前"至指令碼或者函式的頂部。但是初始化的操作則還在原來var語句的位置執行,在宣告語句之前變數的值都是undefined.
for(var i = 0;i < 10; i++) console.log(i);
for(var i = 0,j = 10; i < 10;i++,j--) console.log(i*j);
for(var i in o) console.log(i);複製程式碼
多次宣告同一個變數是無所謂的
2.function
(1).關鍵字function用來定義函式
var f = function(x){return x+1;} //將表示式賦值給一個變數
function f(x){return x+1;} //含有變數名的語句複製程式碼
條件語句
條件語句是通過判斷指定表示式的值來決定執行還是跳過某些語句。
1.if
if/else語句通過判斷一個表示式的計算結果來選擇執行兩條分支中的一條
(1).
if(username == null) //如果username是null或者undefined
username = "John Doe"; //對其進行定義
//如果username是null,undefined,false,0,"",或者NaN,那麼給它賦一個新值
if(!username) username = "John Doe";
if(!adress){
address = "";
message = "Please specify a mailing address";
}複製程式碼
(2).當expression為真值時執行statement1,當expression為假值時執行statement2
if(expression){
statement1
}else{
statement2
}複製程式碼
2.else if
else if 語句並不是真正的JavaScript語句,它只不過是多條if/else語句連在一起時的一種慣用寫法。
if(n == 1){
//執行程式碼塊1
}else if(n == 2){
//執行程式碼塊2
}else if(n == 3){
//執行程式碼塊3
}else{
//之前的條件都為false,則執行這裡的程式碼塊4
}複製程式碼
3.switch
switch(n){
case 1: //如果 n === 1,從這裡開始執行
//執行程式碼塊1
break; //停止執行switch語句
case 2:
//執行程式碼塊2
break;
case 3:
//執行程式碼塊3
break;
default: //如果所有的條件都不匹配
//執行程式碼塊4
}複製程式碼
(1).每個case的匹配操作實際上是"==="恆等運算子比較
(2).表示式和case的匹配並不會做任何型別轉換
迴圈
迴圈語句(looping statement)就是程式路徑的一個迴路,可以讓一部分程式碼重複執行。
JavaScript中有4中迴圈語句:while,do/while,for和for/in
最常用的迴圈就是對陣列元素的遍歷
(1).while
var count = 0;
while(count < 10){
console.log(count);
count++;
}複製程式碼
在幾乎每一次迴圈中,都會有一個或多個變數隨著迴圈的迭代而改變。
否則一個初始值為真值的表示式的值永遠都是真值,迴圈也不會結束。
(2).do/while
它是在迴圈的尾部而不是頂部檢測迴圈表示式,這就意味著迴圈體至少會執行一次。
function printArray(a){
var len = a.length,i = 0;
if(len = 0){
console.log("Empty Array")
}else{
do{
console.log(a[i])
}while(++i < len);
}
}複製程式碼
(3).for
A.大部分的迴圈都具有特定的計數器變數。
B.計數器的三個關鍵操作是初始化,檢測和更新。
for(initialize;test;increment){
statement;
}
initialize;
while(test){
statement;
increment;
}複製程式碼
C.initialize表示式只在迴圈開始之前執行一次。
每次迴圈執行之前會執行test表示式,並判斷表示式的結果來決定是否執行迴圈體,如果test計算結果為真值,則執行迴圈體中的statement.
最後,執行increment表示式
for(var count=0;count<10;count++){
console.log(count);
}複製程式碼
D.逗號運算子
var i,j;
for(i = 0, j = 10;i<10;i++,j--){
sum += i *j;
}複製程式碼
E.用for迴圈來遍歷連結串列資料結構,並返回連結串列中的最後一個物件(也就是第一個不包含next屬性的物件);
function tail(o){ //返回連結串列的最後一個節點物件
for(;o.next;o = o.next){ //根據判斷o.next是不是真值來執行遍歷
return o;
}
}複製程式碼
(4).for/in
for(variable in object){
statement
}複製程式碼
A.使用for迴圈來遍歷陣列元素
for(var i=0;i<a.length;i++){ //i代表了陣列元素的索引
console.log(a[i]); //輸出陣列中的每個元素
}複製程式碼
B.for/in迴圈則是用來更方便地遍歷物件屬性成員
for(var p in o){ //將屬性名字賦值給變數p
console.log(o[p]); //輸出每一個屬性的值
}複製程式碼
C.將所有物件屬性複製至一個陣列中
var o = {x:1,y:2,z:3};
var a = [],i=0;
for(a[i++] in o);複製程式碼
D.for/in迴圈可以像列舉物件屬性一樣列舉陣列索引
for(i in a){
console.log(i);
}複製程式碼
跳轉
JavaScript的執行可以從一個位置跳轉到另一個位置。
break語句是跳轉到迴圈或者其他語句的結束。
continue語句是終止本次迴圈的執行並開始下一次迴圈的執行。
return語句讓直譯器跳出函式體的執行,並提供本次呼叫的返回值。
(1).標籤語句
通過給語句定義標籤,就可以在程式的任何地方通過標籤名引用這條語句。
mainloop:while(token != null){
//忽略這裡的程式碼...
continue mainloop; //跳轉到下一次迴圈
//忽略這裡的程式碼...
}複製程式碼
(2).break語句
單獨使用break語句的作用是立即退出最內層的迴圈或switch語句。
for(var i = 0;i < a.length;i++){
if(a[i] == target){
break;
}
}複製程式碼
(3).continue語句
它不是退出迴圈,而是轉而執行下一次迴圈
for(var i = 0;i<a.length;i++){
if(!data[i]){
continue; //不能處理undefined資料
}
total += data[i];
}複製程式碼
(4).return語句
函式呼叫是一種表示式,而所有表示式都有值。
函式中的return語句既是指定函式呼叫後的返回值。
return語句只能在函式體內出現,如果不是的話會報語法錯誤。當執行到return語句的時候,函式終止執行,並返回expression的值給呼叫程式。
function square(x){ //一個包含return語句的函式
return x*x; //呼叫結果為4
}
aquare(2);複製程式碼
(5).throw語句
所謂異常(exception)是當發生了某種異常情況或錯誤時產生的一個訊號。
(6).try/catch/finally語句
其他語句型別
1.with語句
作用域鏈(scope chain),一個可以按序檢索的物件列表,通過它可以進行變數名解析。
with語句用於臨時擴充套件作用域鏈
不推薦使用
2.debugger語句
這條語句用來產生一個斷點(breakpoint),JavaScript程式碼的執行會停止在斷點的位置,這時可以使用偵錯程式輸出變數的值,檢查呼叫棧等。
3.'use strict'
"use strict"是ECMAScript引入的一條指令。指令不是語句(但非常接近於語句)。
JavaScript語句小結
|版權宣告:本文為summer博主原創文章,未經博主允許不得轉載。