摘要:以下內容摘自阮一峰標準參考教程語句叫做表達式,指一個為了得到返回值的計算式。語句和表達式的區別在于,前者主要為了進行某種操作,一般情況下不需要返回值后者則是為了得到返回值,一定會返回一個值。變量變量是對值的具名引用。
以下內容摘自阮一峰-JavaScript-標準參考教程
語句var a = 1 + 3;
1 + 3叫做表達式(expression),指一個為了得到返回值的計算式。語句和表達式的區別在于,前者主要為了進行某種操作,一般情況下不需要返回值;后者則是為了得到返回值,一定會返回一個值。凡是 JavaScript 語言中預期為值的地方,都可以使用表達式。比如,賦值語句的等號右邊,預期是一個值,因此可以放置各種表達式。
變量變量是對“值”的具名引用。變量就是為“值”起名,然后引用這個名字,就等同于引用這個值。變量的名字就是變量名。
var a = 1;
上面的代碼先聲明變量a,然后在變量a與數值1之間建立引用關系,稱為將數值1“賦值”給變量a。以后,引用變量名a就會得到數值1。最前面的var,是變量聲明命令。它表示通知解釋引擎,要創建一個變量a。
變量的聲明和賦值,是分開的兩個步驟,上面的代碼將它們合在了一起,實際的步驟是下面這樣。
var a; a = 1;
變量提升
JavaScript 引擎的工作方式是,先解析代碼,獲取所有被聲明的變量,然后再一行一行地運行。這造成的結果,就是所有的變量的聲明語句,都會被提升到代碼的頭部,這就叫做變量提升(hoisting)。
console.log(a); var a = 1;
上面代碼首先使用console.log方法,在控制臺(console)顯示變量a的值。這時變量a還沒有聲明和賦值,所以這是一種錯誤的做法,但是實際上不會報錯。因為存在變量提升,真正運行的是下面的代碼
var a; console.log(a); a = 1;
最后的結果是顯示undefined,表示變量a已聲明,但還未賦值。
-->只有在行首,才會被當成單行注釋,否則會當作正常的運算。
function countdown(n) { while (n --> 0) console.log(n); } countdown(3) // 2 // 1 // 0IF語句
*else代碼塊總是與離自己最近的那個if語句配對。
var m = 1; var n = 2; if (m !== 1) if (n === 2) console.log("hello"); else console.log("world"); 上面代碼不會有任何輸出,else代碼塊不會得到執行,因為它跟著的是最近的那個if語句,相當于下面這樣。 if (m !== 1) { if (n === 2) { console.log("hello"); } else { console.log("world"); } }
如果想讓else代碼塊跟隨最上面的那個if語句,就要改變大括號的位置。
if (m !== 1) { if (n === 2) { console.log("hello"); } } else { console.log("world"); } // worldSwitch語句
*需要注意的是,每個case代碼塊內部的break語句不能少,否則會接下去執行下一個case代碼塊,而不是跳出 switch結構。
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代碼塊之中沒有break語句,導致不會跳出switch結構,而會一直執行下去。正確的寫法是像下面這樣。
switch (x) { case 1: console.log("x 等于1"); break; case 2: console.log("x 等于2"); break; default: console.log("x 等于其他值"); }
*需要注意的是,switch語句后面的表達式,與case語句后面的表示式比較運行結果時,采用的是嚴格相等運算符(===),而不是相等運算符(==),這意味著比較時不會發生類型轉換。
var x = 1; switch (x) { case true: console.log("x 發生類型轉換"); default: console.log("x 沒有發生類型轉換"); } // x 沒有發生類型轉換三元運算符
(條件) ? 表達式1 : 表達式2
上面代碼中,如果“條件”為true,則返回“表達式1”的值,否則返回“表達式2”的值。
var msg = "數字" + n + "是" + (n % 2 === 0 ? "偶數" : "奇數");break 語句和 continue 語句
*break語句用于跳出代碼塊或循環
var i = 0; while(i < 100) { console.log("i 當前為:" + i); i++; if (i === 10) break; }
*continue語句用于立即終止本輪循環,返回循環結構的頭部,開始下一輪循環。
var i = 0; while (i < 100){ i++; if (i % 2 === 0) continue; console.log("i 當前為:" + i); }
上面代碼只有在i為奇數時,才會輸出i的值。如果i為偶數,則直接進入下一輪循環。
*如果存在多重循環,不帶參數的break語句和continue語句都只針對最內層循環。
標簽(label)JavaScript 語言允許,語句的前面有標簽(label),相當于定位符,用于跳轉到程序的任意位置,標簽的格式如下。
**label: 語句**
標簽通常與break語句和continue語句配合使用,跳出特定的循環
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
上面代碼為一個雙重循環區塊,break命令后面加上了top標簽(注意,top不用加引號),滿足條件時,直接跳出雙層循環。如果break語句后面不使用標簽,則只能跳出內層循環,進入下一次的外層循環。
continue語句也可以與標簽配合使用。
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
文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。
轉載請注明本文地址:http://specialneedsforspecialkids.com/yun/107308.html
摘要:菜鳥教程這是一個屬性其值是字符串菜鳥教程同上這是一個屬性其值是字符串用于定義的函數,可以通過來返回函數值。它們都有前綴,以便與用戶定義的屬性區分開來。 開篇語 我最近學習了js,取得進步,現在學習vue.js.建議新手學習,請不要用npm的方式(vue-cli,vue腳手架),太復雜了. 請直接下載vue.js文件本地引入,就上手學習吧參照菜鳥教程網站的vue.js教程http://...
摘要:具體來說,包管理器就是可以通過命令行,幫助你把外部庫和插件放到你的項目里面并在之后進行版本升級,這樣就不用手工復制和更新庫。現在有的包管理器主要是和。 一、基礎 1、學習HTML基礎 HTML給你的網頁賦予了結構。它就像是人的骨架那樣讓你保持站立。首先你需要去學習語法以及它必須提供的一切。你的學習應該聚焦在下面這些東西上: 學習HTML基礎,了解如何編寫語義HTML 理解如何把網頁分...
閱讀 1698·2021-10-28 09:32
閱讀 605·2021-09-24 09:47
閱讀 2920·2021-09-02 15:11
閱讀 2733·2021-08-09 13:46
閱讀 2884·2019-08-30 15:55
閱讀 1071·2019-08-30 15:54
閱讀 3300·2019-08-29 14:12
閱讀 805·2019-08-26 13:40