摘要:以下內(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 // 0IF語(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"); } // worldSwitch語(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
摘要:菜鳥(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://...
摘要:具體來(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è)分...
摘要:具體來(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è)分...
閱讀 1739·2021-10-28 09:32
閱讀 637·2021-09-24 09:47
閱讀 2972·2021-09-02 15:11
閱讀 2761·2021-08-09 13:46
閱讀 2915·2019-08-30 15:55
閱讀 1096·2019-08-30 15:54
閱讀 3334·2019-08-29 14:12
閱讀 836·2019-08-26 13:40