成人国产在线小视频_日韩寡妇人妻调教在线播放_色成人www永久在线观看_2018国产精品久久_亚洲欧美高清在线30p_亚洲少妇综合一区_黄色在线播放国产_亚洲另类技巧小说校园_国产主播xx日韩_a级毛片在线免费

資訊專(zhuān)欄INFORMATION COLUMN

JS基礎(chǔ)語(yǔ)法 學(xué)習(xí)筆記1

lyning / 542人閱讀

摘要:以下內(nèi)容摘自阮一峰標(biāo)準(zhǔn)參考教程語(yǔ)句叫做表達(dá)式,指一個(gè)為了得到返回值的計(jì)算式。語(yǔ)句和表達(dá)式的區(qū)別在于,前者主要為了進(jìn)行某種操作,一般情況下不需要返回值后者則是為了得到返回值,一定會(huì)返回一個(gè)值。變量變量是對(duì)值的具名引用。

以下內(nèi)容摘自阮一峰-JavaScript-標(biāo)準(zhǔn)參考教程

語(yǔ)句
var a = 1 + 3;

1 + 3叫做表達(dá)式(expression),指一個(gè)為了得到返回值的計(jì)算式。語(yǔ)句和表達(dá)式的區(qū)別在于,前者主要為了進(jìn)行某種操作,一般情況下不需要返回值;后者則是為了得到返回值,一定會(huì)返回一個(gè)值。凡是 JavaScript 語(yǔ)言中預(yù)期為值的地方,都可以使用表達(dá)式。比如,賦值語(yǔ)句的等號(hào)右邊,預(yù)期是一個(gè)值,因此可以放置各種表達(dá)式。

變量

變量是對(duì)“值”的具名引用。變量就是為“值”起名,然后引用這個(gè)名字,就等同于引用這個(gè)值。變量的名字就是變量名。

var a = 1;

上面的代碼先聲明變量a,然后在變量a與數(shù)值1之間建立引用關(guān)系,稱(chēng)為將數(shù)值1“賦值”給變量a。以后,引用變量名a就會(huì)得到數(shù)值1。最前面的var,是變量聲明命令。它表示通知解釋引擎,要?jiǎng)?chuàng)建一個(gè)變量a。

變量的聲明和賦值,是分開(kāi)的兩個(gè)步驟,上面的代碼將它們合在了一起,實(shí)際的步驟是下面這樣。

var a;
a = 1;

變量提升

JavaScript 引擎的工作方式是,先解析代碼,獲取所有被聲明的變量,然后再一行一行地運(yùn)行。這造成的結(jié)果,就是所有的變量的聲明語(yǔ)句,都會(huì)被提升到代碼的頭部,這就叫做變量提升(hoisting)。

console.log(a);
var a = 1;

上面代碼首先使用console.log方法,在控制臺(tái)(console)顯示變量a的值。這時(shí)變量a還沒(méi)有聲明和賦值,所以這是一種錯(cuò)誤的做法,但是實(shí)際上不會(huì)報(bào)錯(cuò)。因?yàn)榇嬖谧兞刻嵘?,真正運(yùn)行的是下面的代碼

var a;
console.log(a);
a = 1;

最后的結(jié)果是顯示undefined,表示變量a已聲明,但還未賦值。

-->只有在行首,才會(huì)被當(dāng)成單行注釋?zhuān)駝t會(huì)當(dāng)作正常的運(yùn)算。

function countdown(n) {
  while (n --> 0) console.log(n);
}
countdown(3)
// 2
// 1
// 0

IF語(yǔ)句

*else代碼塊總是與離自己最近的那個(gè)if語(yǔ)句配對(duì)。

var m = 1;
var n = 2;

if (m !== 1)
if (n === 2) console.log("hello");
else console.log("world");

上面代碼不會(huì)有任何輸出,else代碼塊不會(huì)得到執(zhí)行,因?yàn)樗氖亲罱哪莻€(gè)if語(yǔ)句,相當(dāng)于下面這樣。

  if (m !== 1) {
  if (n === 2) {
    console.log("hello");    
  } else {
    console.log("world");
  }
}

如果想讓else代碼塊跟隨最上面的那個(gè)if語(yǔ)句,就要改變大括號(hào)的位置。

if (m !== 1) {
  if (n === 2) {
    console.log("hello");    
  }
} else {
  console.log("world");
}
// world
Switch語(yǔ)句

*需要注意的是,每個(gè)case代碼塊內(nèi)部的break語(yǔ)句不能少,否則會(huì)接下去執(zhí)行下一個(gè)case代碼塊,而不是跳出 switch結(jié)構(gòu)。

var x = 1;

switch (x) {
  case 1:
    console.log("x 等于1");
  case 2:
    console.log("x 等于2");
  default:
    console.log("x 等于其他值");
}
// x等于1
// x等于2
// x等于其他值

上面代碼中,case代碼塊之中沒(méi)有break語(yǔ)句,導(dǎo)致不會(huì)跳出switch結(jié)構(gòu),而會(huì)一直執(zhí)行下去。正確的寫(xiě)法是像下面這樣。

switch (x) {
  case 1:
    console.log("x 等于1");
    break;
  case 2:
    console.log("x 等于2");
    break;
  default:
    console.log("x 等于其他值");
}

*需要注意的是,switch語(yǔ)句后面的表達(dá)式,與case語(yǔ)句后面的表示式比較運(yùn)行結(jié)果時(shí),采用的是嚴(yán)格相等運(yùn)算符(===),而不是相等運(yùn)算符(==),這意味著比較時(shí)不會(huì)發(fā)生類(lèi)型轉(zhuǎn)換。

  
var x = 1;

switch (x) {
  case true:
    console.log("x 發(fā)生類(lèi)型轉(zhuǎn)換");
  default:
    console.log("x 沒(méi)有發(fā)生類(lèi)型轉(zhuǎn)換");
}
// x 沒(méi)有發(fā)生類(lèi)型轉(zhuǎn)換
三元運(yùn)算符

(條件) ? 表達(dá)式1 : 表達(dá)式2

上面代碼中,如果“條件”為true,則返回“表達(dá)式1”的值,否則返回“表達(dá)式2”的值。

var msg = "數(shù)字" + n + "是" + (n % 2 === 0 ? "偶數(shù)" : "奇數(shù)");

break 語(yǔ)句和 continue 語(yǔ)句

*break語(yǔ)句用于跳出代碼塊或循環(huán)

var i = 0;

while(i < 100) {
  console.log("i 當(dāng)前為:" + i);
  i++;
  if (i === 10) break;
}

*continue語(yǔ)句用于立即終止本輪循環(huán),返回循環(huán)結(jié)構(gòu)的頭部,開(kāi)始下一輪循環(huán)。

var i = 0;

while (i < 100){
  i++;
  if (i % 2 === 0) continue;
  console.log("i 當(dāng)前為:" + i);
}

上面代碼只有在i為奇數(shù)時(shí),才會(huì)輸出i的值。如果i為偶數(shù),則直接進(jìn)入下一輪循環(huán)。

*如果存在多重循環(huán),不帶參數(shù)的break語(yǔ)句和continue語(yǔ)句都只針對(duì)最內(nèi)層循環(huán)。

標(biāo)簽(label)

JavaScript 語(yǔ)言允許,語(yǔ)句的前面有標(biāo)簽(label),相當(dāng)于定位符,用于跳轉(zhuǎn)到程序的任意位置,標(biāo)簽的格式如下。

**label:
  語(yǔ)句**
  

標(biāo)簽通常與break語(yǔ)句和continue語(yǔ)句配合使用,跳出特定的循環(huán)

top:
  for (var i = 0; i < 3; i++){
    for (var j = 0; j < 3; j++){
      if (i === 1 && j === 1) break top;
      console.log("i=" + i + ", j=" + j);
    }
  }
// i=0, j=0
// i=0, j=1
// i=0, j=2
// i=1, j=0

上面代碼為一個(gè)雙重循環(huán)區(qū)塊,break命令后面加上了top標(biāo)簽(注意,top不用加引號(hào)),滿足條件時(shí),直接跳出雙層循環(huán)。如果break語(yǔ)句后面不使用標(biāo)簽,則只能跳出內(nèi)層循環(huán),進(jìn)入下一次的外層循環(huán)。

continue語(yǔ)句也可以與標(biāo)簽配合使用。

top:
  for (var i = 0; i < 3; i++){
    for (var j = 0; j < 3; j++){
      if (i === 1 && j === 1) continue top;
      console.log("i=" + i + ", j=" + j);
    }
  }
// i=0, j=0
// i=0, j=1
// i=0, j=2
// i=1, j=0
// i=2, j=0
// i=2, j=1
// i=2, j=2



文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請(qǐng)注明本文地址:http://systransis.cn/yun/107308.html

相關(guān)文章

  • (原創(chuàng))vue 學(xué)習(xí)筆記

    摘要:菜鳥(niǎo)教程這是一個(gè)屬性其值是字符串菜鳥(niǎo)教程同上這是一個(gè)屬性其值是字符串用于定義的函數(shù),可以通過(guò)來(lái)返回函數(shù)值。它們都有前綴,以便與用戶定義的屬性區(qū)分開(kāi)來(lái)。 開(kāi)篇語(yǔ) 我最近學(xué)習(xí)了js,取得進(jìn)步,現(xiàn)在學(xué)習(xí)vue.js.建議新手學(xué)習(xí),請(qǐng)不要用npm的方式(vue-cli,vue腳手架),太復(fù)雜了. 請(qǐng)直接下載vue.js文件本地引入,就上手學(xué)習(xí)吧參照菜鳥(niǎo)教程網(wǎng)站的vue.js教程http://...

    layman 評(píng)論0 收藏0
  • 前端學(xué)習(xí)路線

    摘要:具體來(lái)說(shuō),包管理器就是可以通過(guò)命令行,幫助你把外部庫(kù)和插件放到你的項(xiàng)目里面并在之后進(jìn)行版本升級(jí),這樣就不用手工復(fù)制和更新庫(kù)?,F(xiàn)在有的包管理器主要是和。 一、基礎(chǔ) 1、學(xué)習(xí)HTML基礎(chǔ) HTML給你的網(wǎng)頁(yè)賦予了結(jié)構(gòu)。它就像是人的骨架那樣讓你保持站立。首先你需要去學(xué)習(xí)語(yǔ)法以及它必須提供的一切。你的學(xué)習(xí)應(yīng)該聚焦在下面這些東西上: 學(xué)習(xí)HTML基礎(chǔ),了解如何編寫(xiě)語(yǔ)義HTML 理解如何把網(wǎng)頁(yè)分...

    FullStackDeveloper 評(píng)論0 收藏0
  • 前端學(xué)習(xí)路線

    摘要:具體來(lái)說(shuō),包管理器就是可以通過(guò)命令行,幫助你把外部庫(kù)和插件放到你的項(xiàng)目里面并在之后進(jìn)行版本升級(jí),這樣就不用手工復(fù)制和更新庫(kù)。現(xiàn)在有的包管理器主要是和。 一、基礎(chǔ) 1、學(xué)習(xí)HTML基礎(chǔ) HTML給你的網(wǎng)頁(yè)賦予了結(jié)構(gòu)。它就像是人的骨架那樣讓你保持站立。首先你需要去學(xué)習(xí)語(yǔ)法以及它必須提供的一切。你的學(xué)習(xí)應(yīng)該聚焦在下面這些東西上: 學(xué)習(xí)HTML基礎(chǔ),了解如何編寫(xiě)語(yǔ)義HTML 理解如何把網(wǎng)頁(yè)分...

    20171112 評(píng)論0 收藏0

發(fā)表評(píng)論

0條評(píng)論

最新活動(dòng)
閱讀需要支付1元查看
<