javascript程序就是一系列可執(zhí)行語(yǔ)句的集合妖泄。(ps我看了全位置呢比js高級(jí)講解的更加系統(tǒng)和詳細(xì),所以今天就結(jié)合兩本書(shū)內(nèi)容。)
表達(dá)式語(yǔ)句
1)賦值語(yǔ)句
i = 3友多;
2)delete作為語(yǔ)句使用(作用:刪除一個(gè)對(duì)象的屬性)
delete o.x;
3.)函數(shù)調(diào)用語(yǔ)句
alert(greeting);
window.close();
復(fù)合語(yǔ)句和空語(yǔ)句
復(fù)合語(yǔ)句
javascript可以將多個(gè)語(yǔ)句聯(lián)合一起堤框,形成一個(gè)復(fù)合語(yǔ)句域滥,只需要用花括號(hào)括起來(lái)即可。
{
? ? ? ?x ?= ?Math.PI;
? ? ? cx = Math.cos(x);
? ? ? ?console.log(cos“”(㏒10)="+cx);
}
注意:?語(yǔ)句塊的結(jié)尾不需要分號(hào)蜈抓,但是塊中語(yǔ)句必須以分號(hào)結(jié)束启绰。
? ? ? ? ? ? ?塊中縮進(jìn)不是必要,但整齊的縮進(jìn)讓代碼可讀性高沟使,容易理解委可。
空語(yǔ)句
它語(yǔ)句包括0條語(yǔ)句。
例如
腊嗡;
for(i = 0着倾; i < a.length; a[i++] = 0)// empty
聲明語(yǔ)句
聲明語(yǔ)句本身什么也不做,但它有一個(gè)重要的意義叽唱,通過(guò)創(chuàng)建變量和函數(shù)屈呕,可以更好的組織代碼的語(yǔ)句。
例如棺亭,var和function虎眨,他們聲明或者定義變量或函數(shù)。
var 用來(lái)聲明一個(gè)或者多個(gè)變量
var ? i; ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? //一個(gè)簡(jiǎn)單的變量
var ? j = 0嗽桩; ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?//一個(gè)帶有初始值的變量
var ?p岳守,g; ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?//兩個(gè)變量
var greeting = “hello”+ name碌冶; ? ? ? ? ? ? ? ? ? ? ? //復(fù)雜的初始化變量
var ?x = 4湿痢,y = Math.cos(0.75),r扑庞,theta ? ? ?//多個(gè)變量
var ?w=2譬重, z = w+w; ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?// 第二個(gè)變量使用了第一個(gè)變量
var ?c = 8罐氨, ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? //更多變量
? ? ? ? f = funciton(c){return ?c*c}臀规,
? ? ? ? ?y = f(c);
var語(yǔ)句同樣可以作為for循環(huán)或者for/in循環(huán)的一部分
for(var i = 0栅隐; i < 10塔嬉; i ++)
for(var i in ?o)
注意:如果函數(shù)定義的在函數(shù)體內(nèi),那么它定義就是一個(gè)局部變量租悄,其作用域就是這個(gè)函數(shù)谨究。
function
關(guān)鍵字function用來(lái)定義函數(shù),函數(shù)名之后的圓括號(hào)中是參數(shù)泣棋,參數(shù)直接用逗號(hào)分隔胶哲,花括號(hào)的必須的。
var f = function(x){ return x + 1外傅;}
ps:函數(shù)這部分會(huì)在函數(shù)部分重點(diǎn)詳細(xì)說(shuō)明纪吮。
條件語(yǔ)句
條件語(yǔ)句是通過(guò)判斷制定表達(dá)式的值來(lái)決定執(zhí)行還是跳過(guò)某些語(yǔ)句。
if 有條件的執(zhí)行語(yǔ)句
if 語(yǔ)句中圓括號(hào)是必須的
if(條件)
{
? ? ? ?語(yǔ)句
}
或者
if(條件) ? ? ? ? ? ? ? //如果真
{
? ? ? ? 語(yǔ)句
}
else ? ? ? ? ? ? ? ? ? ? ? // 否則
{
}
多個(gè)if 我們這么寫萎胰。
if(條件){
? ? ?執(zhí)行代碼
}
else if (條件2){
執(zhí)行代碼2
}
else if(條件3){
執(zhí)行代碼3
}
else{
之前代碼都為false 執(zhí)行代碼4
}
switch
if語(yǔ)句在程序執(zhí)行中創(chuàng)建一個(gè)分支碾盟,并且可以使用else if 來(lái)處理多條分支,當(dāng)所有分支都依賴同一個(gè)表達(dá)式時(shí)技竟,else并非最佳解決方案冰肴,而是switch。
switch(條件){
情況
}
例子
switch(n){
case1:
alert(星期一)榔组;
break熙尉;
case2:
alert(星期二);
break搓扯;
case3:
alert(星期三)检痰;
break;
……
default:
alert(周末)
break锨推;
}
解釋:如果switch條件與case都不匹配則執(zhí)行default铅歼;如果沒(méi)有這個(gè)語(yǔ)句塊公壤,則跳出switch。
注意:if else if ?else 用于判斷連線的一段椎椰;而switch則可以用于具體的某一個(gè)點(diǎn)厦幅。
循環(huán)
while
格式:while(條件){
語(yǔ)句
}
先判斷再執(zhí)行;所以花括號(hào)內(nèi)的循環(huán)體可能一次都不執(zhí)行慨飘。
do/while
格式:
do{
}while(條件)
先執(zhí)行再判斷确憨;所以代碼循環(huán)體至少被執(zhí)行一次。
for
格式:
for(初始化操作瓤的;循環(huán)判斷條件休弃;計(jì)算器變量的更新){
循環(huán)體
}
例子:
var count = 10
for (var i = 0; i < count堤瘤; i++){
? ? ? ? alert(i)玫芦;
}
// 雖然三個(gè)量可以省去,但是兩個(gè)分號(hào)卻千萬(wàn)不能省去
for(本辐;;){
aler(這是一個(gè)死循環(huán))
}
for/in
格式:
for( 變量 in 表達(dá)式){
條件
}
for/in通常用于便利對(duì)象的屬性?
跳轉(zhuǎn)
標(biāo)簽語(yǔ)句
通過(guò)給語(yǔ)句定義標(biāo)簽医增,就可以在程序的任何地方通過(guò)標(biāo)簽引用語(yǔ)句慎皱。
break和continue是javascript中唯一可以使用語(yǔ)句標(biāo)簽的語(yǔ)句。
標(biāo)簽:語(yǔ)句叶骨。
這里的標(biāo)簽必須是合法的javascript標(biāo)識(shí)符茫多,而不能是保留字。
break語(yǔ)句
單獨(dú)使用break語(yǔ)句的作用是立即退出最內(nèi)層的循環(huán)或switch語(yǔ)句忽刽,外面的循環(huán)和switch后面的語(yǔ)句繼續(xù)執(zhí)行天揖。
例子
for(var i=0;i < a.length跪帝;i++){
? ? ? ? ? ? if(a[i]==target) break今膊;
}
當(dāng)整個(gè)數(shù)組遍歷完后會(huì)正常退出循環(huán),如果找到了需要找的數(shù)組元素伞剑,則使用break語(yǔ)句退出循環(huán)斑唬。
當(dāng)break和標(biāo)簽一塊使用的時(shí)候,程序?qū)⑻D(zhuǎn)到這個(gè)標(biāo)簽所標(biāo)識(shí)的語(yǔ)句塊結(jié)束黎泣,或者直接終止這個(gè)閉合語(yǔ)句塊的執(zhí)行恕刘。break和標(biāo)簽直接不能換行。
continue語(yǔ)句
continue語(yǔ)句是轉(zhuǎn)而執(zhí)行下一次循環(huán)抒倚,continue語(yǔ)句也是退出當(dāng)前循環(huán)褐着,但退出后會(huì)從循環(huán)的頂部繼續(xù)循環(huán)。
return語(yǔ)句
return語(yǔ)句只能在函數(shù)體內(nèi)出現(xiàn)托呕,函數(shù)中的return語(yǔ)句是指定函數(shù)調(diào)用后的返回值含蓉。return語(yǔ)句經(jīng)常作為函數(shù)內(nèi)的最后一條語(yǔ)句出現(xiàn)频敛。
throw語(yǔ)句
在javascript中,當(dāng)產(chǎn)生運(yùn)行時(shí)錯(cuò)誤或者程序使用throw語(yǔ)句是就會(huì)顯示的拋出異常谴餐。
try/catch/fianlly語(yǔ)句
try/catch/fianlly是javascript異常處理機(jī)制姻政。
? ? try{
? ? ? ? ? ? ?// 通常來(lái)講,這里的代碼會(huì)從頭執(zhí)行到尾而不產(chǎn)生任何問(wèn)題岂嗓,
? ? ? ? ? ? ?//但有時(shí)候回拋出一個(gè)異常汁展,要么是由throw語(yǔ)句直接拋出異常
? ? ? ? ? ? //要么是通過(guò)調(diào)用一個(gè)方法簡(jiǎn)介拋出異常
? ? ? ? ? }?
catch(e){
//當(dāng)且僅當(dāng)try語(yǔ)句塊拋出了異常,才會(huì)執(zhí)行這里的代碼
//這里可以通過(guò)局部變量e來(lái)獲得對(duì)Error對(duì)象或者拋出的其他值的引用
//這里的代碼塊可以基于某種原因處理這里的異常厌殉,也客戶要忽略這個(gè)異常
//還可以通過(guò)throw語(yǔ)句重新拋出異常
}
finally{
// 不管try語(yǔ)句塊是否拋出了異常食绿,這里的邏輯總是會(huì)執(zhí)行,終止try語(yǔ)句塊的方式有:
//①正常終止公罕,執(zhí)行完語(yǔ)句塊的最后一條語(yǔ)句
//②通過(guò)break器紧,continue或者returen語(yǔ)句終止
//③拋出一個(gè)異常,異常被catch從句捕獲
//拋出一個(gè)異常楼眷,異常未被捕獲铲汪,繼續(xù)向上傳播
}
例子
try{
//要求用戶輸入一個(gè)數(shù)字
var n = Number(prompt(“請(qǐng)輸入一個(gè)正整數(shù)”,“ ”))罐柳;
//假設(shè)輸入是合法的掌腰,計(jì)算這個(gè)數(shù)的階乘
var f = factorial(n);
//現(xiàn)實(shí)結(jié)果
alert(n ?+ “张吉!=” + f)齿梁;
}
catc(ex){
//如果輸入不合法,將執(zhí)行這里的邏輯
alert(ex)肮蛹;//告訴用戶發(fā)生了什么錯(cuò)誤
}
其他類型語(yǔ)句
with語(yǔ)句
with語(yǔ)句用來(lái)臨時(shí)擴(kuò)展作用域鏈 (不建議使用)
類似這種訪問(wèn)HTML表單的元素:
document.forms[0].address.value
with(document.forms[0]){
//直接訪問(wèn)表單元素勺择,例如
name.value = "";
address.value = "";
email.value = "" ;
}
debugger語(yǔ)句
用來(lái)斷點(diǎn)調(diào)試代碼
use strict 語(yǔ)句
ps:這個(gè)語(yǔ)句我并沒(méi)有讀懂,所以就不亂寫了伦忠。
小結(jié)
囧 小結(jié)用圖片表示更好省核,可是我沒(méi)找到,所以只能假裝有圖假裝有圖片假裝有圖……