體上程序代碼的執(zhí)行是從上到下順序執(zhí)行,在某些具體階段可以會產(chǎn)生分支和循環(huán)重復(fù)的情形,形成了各種不同的程序語句,構(gòu)成了不同的程序結(jié)構(gòu)。主要有順序結(jié)構(gòu),分支結(jié)構(gòu)和循環(huán)結(jié)構(gòu)。以前的代碼主要是按程序的順序執(zhí)行,以后的代碼會是這三者的不同組合。
如果說表達(dá)式(例如:num1+num2)是短語。
語句就是完整的句子。(例如:sum=num1+num2;)
表達(dá)式計算出來的是一個值,語句來執(zhí)行使某事情發(fā)生。
例如:給一個學(xué)生的年齡,輸出這個學(xué)生是否成年了。
如果 年齡大于等于18歲 輸出學(xué)生成年了。
這里的成年了是否會輸出是有 年齡是否滿足決定的。
JS在默認(rèn)的就是從上到下一條條的執(zhí)行代碼語句。
為使某事發(fā)生可能會改變語句的默認(rèn)執(zhí)行順序。
格式:if(條件){
條件為真實執(zhí)行的語句
}
JS解釋器會根據(jù)條件的結(jié)果決定是執(zhí)行還是跳過語句。
讀法:如果 條件為真,執(zhí)行里面的代碼。為假掉過里面的代碼。
//實踐:給一個學(xué)生的年齡,輸出這個學(xué)生是否成年了。
//var age1=parseInt(prompt("請輸入一個學(xué)生的年齡:"));
var age1=23;
if(age1>=18){
console.log("這個學(xué)生成年了。");
}
if(age1<18){
console.log("這個學(xué)生沒有成年。");
}
分析一下,這里的判斷是一個事情的兩個方面?
格式:
if(條件){條件為真,執(zhí)行的語句}
else{條件為假(不為真),執(zhí)行的語句。}
讀法:如果 條件為真 執(zhí)行為真的語句,否則執(zhí)行為假的語句
//實踐:給一個學(xué)生的年齡,輸出這個學(xué)生是否成年了。
// var age2=parseInt(prompt("請輸入一個學(xué)生的年齡:"));
var age2=16;
if(age2>=18){
console.log("這個學(xué)生成年了。");
}
else{
console.log("這個學(xué)生沒有成年。");
}
如果判斷學(xué)生的成績等級,會有很多的判斷。
格式:
if(條件1){為真,執(zhí)行的語句}
else if(條件2){為真,執(zhí)行的語句}
......
else if(條件n){為真,執(zhí)行的語句}
else{ 條件n為假,執(zhí)行的語句 }
//實踐:根據(jù)學(xué)生的成績,判定學(xué)生的等級
//var score1=parseFloat(prompt("請輸入一個學(xué)生的成績:"));
var score1=95;
if(score1>=90){console.log("A");}
else if(score1>=80){console.log("B");}
else if(score1>=70){console.log("C");}
else if(score1>=60){console.log("D");}
else{console.log("E");}
它是if語句的另外一種形式,解決根據(jù)表達(dá)式的不同而執(zhí)行不同語句的問題。
格式:
switch(表達(dá)式){
case 值1:語句塊;break;
case 值2:語句塊;break;
......
case 值n:語句塊;break;
default:語句塊n+1;break;
}
執(zhí)行:
計算一次 switch 表達(dá)式
每個表達(dá)式的值與每個 case 的值進(jìn)行對比
如果存在匹配,則執(zhí)行關(guān)聯(lián)代碼
default:關(guān)鍵詞規(guī)定不存在 case 匹配時所運(yùn)行的代碼。
break:如果 JavaScript 遇到 break 關(guān)鍵詞,它會跳出 switch 代碼塊。
//實踐:重寫根據(jù)學(xué)生的成績,判定學(xué)生的等級
//var score2=parseInt(prompt("請輸入一個學(xué)生的成績:"));
var score2=90;
score2=parseInt(score2/10);//parseInt()取得整數(shù)部分。
switch(score2){
case 10:console.log("A");break;
case 9:console.log("A");break;
case 8:console.log("B");break;
case 7:console.log("C");break;
case 6:console.log("D");break;
default:console.log("E");break;}
可以當(dāng)成一種簡單的if-else語句。
名字表示的三元運(yùn)算符需要三個操作數(shù)。
語法是:
條件 ? 結(jié)果1 : 結(jié)果2;
這里你把條件寫在問號上(?)的前面后面跟著用冒號(:)分隔的結(jié)果1和結(jié)果2。
滿足條件時結(jié)果1否則結(jié)果2。
JavaScript中,有多種方法可以判斷一個變量的數(shù)據(jù)類型。以下是一些常見的方法:
typeof 是JavaScript中的一元操作符,返回一個表示未計算變量類型或已計算對象類型的字符串。但是,需要注意的是 typeof 對于 null 和 array 的處理可能不是你所期望的:
console.log(typeof undefined); // "undefined"
console.log(typeof 123); // "number"
console.log(typeof 'hello'); // "string"
console.log(typeof true); // "boolean"
console.log(typeof {}); // "object"
console.log(typeof []); // "object" 而不是 "array"
console.log(typeof null); // "object" 而不是 "null"
console.log(typeof function(){}); // "function"
instanceof 操作符用于檢測構(gòu)造函數(shù)的 prototype 屬性是否出現(xiàn)在對象的原型鏈中的任何位置。這主要用于檢測對象是否屬于某個類。
console.log([] instanceof Array); // true
console.log(null instanceof Object); // false,因為 null 不是一個對象
這是檢測一個值是否為數(shù)組的最佳方法。
console.log(Array.isArray([])); // true
console.log(Array.isArray({})); // false
這個方法返回表示該對象的字符串。對于檢測原始值類型,特別是當(dāng) typeof 給出不直觀的結(jié)果時(如 null 和 array),這是一個很有用的方法。
function getType(obj) {
return Object.prototype.toString.call(obj).slice(8, -1);
}
console.log(getType(null)); // "Null"
console.log(getType([])); // "Array"
console.log(getType({})); // "Object"
console.log(getType(123)); // "Number"
console.log(getType('hello')); // "String"
console.log(getType(true)); // "Boolean"
console.log(getType(undefined)); // "Undefined"
每個JavaScript對象都有一個 constructor 屬性,它指向創(chuàng)建該對象的構(gòu)造函數(shù)。但請注意,如果 constructor 被手動修改,則可能不準(zhǔn)確。
console.log(([]).constructor === Array); // true
console.log(({}).constructor === Object); // true
某些內(nèi)置對象(如 Array、Date、RegExp 等)的 @@toStringTag 屬性值是一個字符串,該字符串用于定制 Object.prototype.toString.call(obj) 的默認(rèn)行為。但通常你不需要直接使用這個屬性,除非你在實現(xiàn)自定義對象并希望改變 Object.prototype.toString.call(obj) 的默認(rèn)行為。
篇文章給大家繼續(xù)講解下js中的多種語句。今天主要說下以下4個語句。
for-in 語句是一種精準(zhǔn)的迭代語句,可以用來枚舉對象的屬性。
使用語法:for (property in expression) statement
請看下面的例子。假設(shè)我們有一個數(shù)組,我們想要求數(shù)組內(nèi)各元素的和,那么我們可以這么寫;
在這個例子中,我們使用 for-in 循環(huán)來循環(huán)獲取arr數(shù)組中的每個元素。每次執(zhí)行循環(huán)時,都會將數(shù)組中的值添加到sum中。這個過程會一直持續(xù)到數(shù)組中的所有元素都被枚舉一遍為止。
使用 label 語句可以在代碼中添加標(biāo)簽,以便將來使用。
使用語法:label: statement
請看下面的例子。
這個例子中定義的 start 標(biāo)簽可以在將來由 break 或 continue 語句引用。加標(biāo)簽的語句一般都要與 for 語句等循環(huán)語句配合使用。
break 和 continue 語句用于在循環(huán)中精確地控制代碼的執(zhí)行。其中,break 語句會立即退出循環(huán),強(qiáng)制繼續(xù)執(zhí)行循環(huán)后面的語句。而 continue 語句雖然也是立即退出循環(huán),但退出循環(huán)后會從循環(huán)的頂
部繼續(xù)執(zhí)行。
請看下面的例子:我們從1開始執(zhí)行,如果i的值能整除5的話就跳出循環(huán);
這個例子中的 for 循環(huán)會將變量 i 由 1 遞增至 10。在循環(huán)體內(nèi),有一個 if 語句檢查 i 的值是否可以被 5 整除(使用求模操作符)。如果是,則執(zhí)行 break 語句退出循環(huán)。另一方面,變量 num 從 0 開
始,用于記錄循環(huán)執(zhí)行的次數(shù)。在執(zhí)行 break 語句之后,要執(zhí)行的下一行代碼是 alert()函數(shù),結(jié)果顯示 4。也就是說,在變量 i 等于 5 時,循環(huán)總共執(zhí)行了 4 次;而 break 語句的執(zhí)行,導(dǎo)致了循環(huán)在
num 再次遞增之前就退出了。
如果在這里把 break 替換為 continue 的話,代碼就如下圖所示:
當(dāng)變量 i 等于 5 時,循環(huán)會在 num 再次遞增之前退出,但接下來執(zhí)行的是下一次循環(huán),即 i 的值等于 6 的循環(huán)。于是,循環(huán)又繼續(xù)執(zhí)行,直到 i 等于10 時自然結(jié)束。而 num 的最終值之所以是 8,是因為 continue 語句導(dǎo)致它少遞增了一次;
with 語句的作用是將代碼的作用域設(shè)置到一個特定的對象中。
使用語法:with (expression) statement;
定義 with 語句的目的主要是為了簡化多次編寫同一個對象的工作,如下面的例子所示:
上面幾行代碼都包含 location 對象。如果使用 with 語句,可以把上面的代碼改寫成如下所示:
注意:由于大量使用 with 語句會導(dǎo)致性能下降,同時也會給調(diào)試代碼造成困難,因此在開發(fā)大型應(yīng)用程序時,不建議使用 with 語句,大家這里了解下即可。
switch 語句與 if 語句的關(guān)系最為密切,而且也是在其他語言中普遍使用的一種流控制語句。
使用語法:
、
請看下面的例子:我們比如小明考試考了82分,我們這里如果是得分0-60為不及格,61-80為一般,81-100為優(yōu)秀,那么小明的成績屬于什么區(qū)間呢。
?
我們這里顯然會彈出優(yōu)秀彈窗。
每日金句:真正的堅韌,應(yīng)該是哭的時候要徹底,笑的時候要開懷,說的時候要淋漓盡致,做的時候要毫不猶豫。喜歡我的文章的小伙伴記得關(guān)注一下哦,每天將為你更新最新知識。
*請認(rèn)真填寫需求信息,我們會在24小時內(nèi)與您取得聯(lián)系。