深入理解ECMAScript的幾個(gè)關(guān)鍵語句
來源:易賢網(wǎng) 閱讀:673 次 日期:2016-06-17 14:22:37
溫馨提示:易賢網(wǎng)小編為您整理了“深入理解ECMAScript的幾個(gè)關(guān)鍵語句”,方便廣大網(wǎng)友查閱!

下面小編就為大家?guī)硪黄钊肜斫釫CMAScript的幾個(gè)關(guān)鍵語句。小編覺得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。

寫在前面

在這一章中我們聊一聊ECMAScript中的幾個(gè)關(guān)鍵語句switch、for-in、label等語句,加深我們對(duì)它們的理解和認(rèn)識(shí)。首先從最常見的說起。

while和for

while和for是很常規(guī)的語句,無論是在JavaScript還是C還是其他編程語言中。而且在編程中我們較常用的也是for,for用起來更靈活,更簡(jiǎn)單,所以有些人可能就會(huì)產(chǎn)生這樣一種誤解:

for比while更強(qiáng)大,能做到while做不到的一些事情。

其實(shí)我們稍微想想while和for語句的語法應(yīng)用,我們就會(huì)發(fā)現(xiàn):

while循環(huán)做不到的for循環(huán)也做不到。

這是因?yàn)閒or循環(huán)只是把while循環(huán)有關(guān)的代碼集中在了一起而已,其實(shí)有些時(shí)候,用while循環(huán)比用for循環(huán)更簡(jiǎn)單。這也是各司其職各有利弊吧。

關(guān)于循環(huán)的另一點(diǎn),我們先看一段代碼:

for(i=0;i<5;i++){

  console.log(i);

}

console.log(i);

在循環(huán)外打印i,打印輸出是5。

可以看到,在循環(huán)內(nèi)部定義的變量在外部也是可以訪問的。在一些語言中比如C,大括號(hào)定義的是塊級(jí)作用域,但是在ECMAScript中是沒有塊級(jí)作用域這個(gè)概念的,所以在循環(huán)內(nèi)部定義的變量在外部也是可以訪問的。

switch語句

在其他編程語言中比如C,switch語句只能使用數(shù)字,而在ECMAScript中,switch語句可以使用任何數(shù)據(jù)類型,像字符串、對(duì)象都是可以的。

這里有一點(diǎn)需要說明:switch語句比較的時(shí)候使用的全等操作符,即===,所以'10'和10不相等,因?yàn)樵谶M(jìn)行全等比較的時(shí)候,并不發(fā)生類型轉(zhuǎn)換。

for-in語句

for-in語句是一種精確性的迭代語句,可以用來遍歷對(duì)象的屬性,當(dāng)然也可以迭代數(shù)組的屬性。下面分別以例子說明:

for-in遍歷對(duì)象

•window

先遍歷一個(gè)特殊的對(duì)象window:

for(var i in window){

  console.log(i);

}

會(huì)打印出一串很長(zhǎng)很長(zhǎng)的屬性列表,大家可自行查看,在此不一一羅列贅述。

•自定義對(duì)象

遍歷自定義對(duì)象

var o={prop1:'value1', prop2:'value2', prop3:'value3'};

for (var i in o){

  console.log(i);

}

打印出prop1 prop2 prop3。

•數(shù)組

遍歷數(shù)組

var array1=[1,2,3,4];

for(var i in array){

  console.log(i);

}

打印輸出1 2 3 4。

with語句

with語句可以用來限制作用域,即可以將代碼的作用域設(shè)置到一個(gè)特定的對(duì)象中。如下:

var hostname=location.hostname;

var url=location.href;

這兩句分別獲取hostname和url,因?yàn)樗鼈児灿胠ocation(同一個(gè)對(duì)象下的屬性),所以我們可以將作用域限定在location中,即用with語句關(guān)聯(lián)location對(duì)象。如下:

with(location){

   

  var hostname=hostname;

  var url=href;

}

需要注意的是:嚴(yán)格模式下使用with語句會(huì)有語法錯(cuò)誤,同時(shí),大量使用with語句會(huì)導(dǎo)致性能下降,同時(shí)也會(huì)給調(diào)試帶來一定的困難,所以在開發(fā)應(yīng)用程序的時(shí)候,尤其是開發(fā)大型應(yīng)用程序的時(shí)候,并不建議使用with語句。

label語句

label語句用來在代碼中加標(biāo)簽,從而可以在以后來使用它。一般情況下,加標(biāo)簽的語句要和for循環(huán)等循環(huán)語句配合來使用。

它的語法是:

label: statement

下面給出代碼詳細(xì)來看看label標(biāo)簽的用法。

1、先給出一段基本的代碼:

var num=0;

for(var i=0;i<10;i++){

  for(var j=0;j<10;j++){

    if(i==5&&j==5){

      break;

    }

    num++;

  }

}

console.log(num);

說明:break跳出了處在內(nèi)部的for循環(huán),j剩下的5次循環(huán)不再執(zhí)行,所以打印的結(jié)果是95。

2、接下來我們將break換成continue:

var num=0;

for(var i=0;i<10;i++){

  for(var j=0;j<10;j++){

    if(i==5&&j==5){

      break;

    }

    num++;

  }

}

console.log(num);

說明:continue跳出了本次循環(huán),就是說跳出了處在內(nèi)部for循環(huán)的這一次循環(huán),所以打印的結(jié)果是99。

3、接下來我們加上一個(gè)名為outer的label標(biāo)簽再分別看打印結(jié)果:

var num=0;

outer:

for(var i=0;i<10;i++){

  for(var j=0;j<10;j++){

    if(i==5&&j==5){

      break outer;

    }

    num++;

  }

}

console.log(num);

說明:加上了標(biāo)簽以后,用break跳到了標(biāo)簽outer處,就是說程序跳出了外循環(huán),即程序執(zhí)行到了i=5且j=5時(shí)停止執(zhí)行,所以打印的結(jié)果是55。

4、我們?cè)贀Q成continue看看:

var num=0;

outer:

for(var i=0;i<10;i++){

  for(var j=0;j<10;j++){

    if(i==5&&j==5){

      continue outer;

    }

    num++;

  }

}

console.log(num);

說明:這一次用的是continue,所以當(dāng)程序執(zhí)行到i=5且j=5時(shí)并沒有跳出外循環(huán),而只是跳出了內(nèi)循環(huán),即剩下的5次不予執(zhí)行,所以打印的結(jié)果是95。

放在一起這幾個(gè)顯得稍微有些混淆,多理解理解就會(huì)好很多。

小結(jié)

我們學(xué)習(xí)一門東西不是為學(xué)而學(xué),是為用而學(xué),說白了就是為了工作而學(xué),所以單純理解上面的東西不是最重要的,不是為記而記,是為用而記,能夠熟練運(yùn)用在實(shí)踐中才是我們希望的。同時(shí),做筆記是一個(gè)很好的習(xí)慣,好記性不如爛筆頭,如果你在做,那么希望你堅(jiān)持下去。

以上這篇深入理解ECMAScript的幾個(gè)關(guān)鍵語句就是小編分享給大家的全部?jī)?nèi)容了,希望能給大家一個(gè)參考

更多信息請(qǐng)查看網(wǎng)絡(luò)編程
易賢網(wǎng)手機(jī)網(wǎng)站地址:深入理解ECMAScript的幾個(gè)關(guān)鍵語句
由于各方面情況的不斷調(diào)整與變化,易賢網(wǎng)提供的所有考試信息和咨詢回復(fù)僅供參考,敬請(qǐng)考生以權(quán)威部門公布的正式信息和咨詢?yōu)闇?zhǔn)!

2025國(guó)考·省考課程試聽報(bào)名

  • 報(bào)班類型
  • 姓名
  • 手機(jī)號(hào)
  • 驗(yàn)證碼
關(guān)于我們 | 聯(lián)系我們 | 人才招聘 | 網(wǎng)站聲明 | 網(wǎng)站幫助 | 非正式的簡(jiǎn)要咨詢 | 簡(jiǎn)要咨詢須知 | 新媒體/短視頻平臺(tái) | 手機(jī)站點(diǎn) | 投訴建議
工業(yè)和信息化部備案號(hào):滇ICP備2023014141號(hào)-1 云南省教育廳備案號(hào):云教ICP備0901021 滇公網(wǎng)安備53010202001879號(hào) 人力資源服務(wù)許可證:(云)人服證字(2023)第0102001523號(hào)
云南網(wǎng)警備案專用圖標(biāo)
聯(lián)系電話:0871-65099533/13759567129 獲取招聘考試信息及咨詢關(guān)注公眾號(hào):hfpxwx
咨詢QQ:1093837350(9:00—18:00)版權(quán)所有:易賢網(wǎng)
云南網(wǎng)警報(bào)警專用圖標(biāo)