《JavaScript權威指南第六版》學習筆記-語句

xf27發表於2017-10-28

語句

表示式語句

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博主原創文章,未經博主允許不得轉載。

相關文章