前端基礎(chǔ)(一)之JavaScript基礎(chǔ)

JavaScirpt變量

JavaScript 變量名稱的規(guī)則:

  • 應(yīng)該起一些具有意義的然想,描述性的摹菠,讓人望文生義的變量名
  • 變量對大小寫敏感(y 和 Y 是兩個不同的變量)【JavaScript 對大小寫敏感】
  • 變量必須以字母或下劃線開始
  • 變量名不能使用系統(tǒng)的關(guān)鍵字或保留字

JavaScript 變量的類型:

  • JavaScript 是一種弱類型的語言操刀,因此變量的類型由賦值號右邊的數(shù)據(jù)所決定乒验。

JavaScript 運算符

  • 算術(shù)運算符:+ – * / % ++ -- 俄认,其中+號還被重載用于拼接字符串往毡,另外蒙揣,任何類
    型+上字符串都是字符串。

  • 賦值運算符:= += -= *= /= %=

  • 比較運算符:== === != > < >= <=

  • 邏輯運算符:&& || !

  • 條件運算符:开瞭? :

JavaScript 分支語句

  • 傳統(tǒng)的 if 懒震。。else嗤详,if 个扰。。else if 葱色。递宅。else 的嵌套都是可行的。

  • switch(n)中的 n 可以是表達式苍狰,但通常是變量办龄,case 結(jié)構(gòu)中也需要使用 break 分隔。

JavaScript 消息框

可以在 JavaScript 中創(chuàng)建三種消息框:警告框淋昭、確認框土榴、提示框。

  • 警告框經(jīng)常用于確保用戶可以得到某些信息响牛。當(dāng)警告框出現(xiàn)后玷禽,用戶需要點擊確定按鈕才能繼續(xù)進行操作。
    alert("文本")

  • 確認框用于使用戶可以驗證或者接受某些信息呀打。當(dāng)確認框出現(xiàn)后矢赁,用戶需要點擊確定或者取消按鈕才能繼續(xù)進行操作。如果用戶點擊確認贬丛,那么返回值為 true撩银。如果用戶點擊取消,那么返回值為 false豺憔。
    confirm("文本")

  • 提示框經(jīng)常用于提示用戶在進入頁面前輸入某個值额获。當(dāng)提示框出現(xiàn)后,用戶需要輸入某個值恭应,然后點擊確認或取消按鈕才能繼續(xù)操縱抄邀。如果用戶點擊確認,那么返回值為輸入的值昼榛。如果用戶點擊取消境肾,那么返回值為 null。
    prompt("文本","默認值")

JavaScript 函數(shù)

  • 將腳本編寫為函數(shù),就可以避免頁面載入時執(zhí)行該腳本奥喻。函數(shù)包含著一些代碼偶宫,這些代碼只能被事件激活,或者在函數(shù)被調(diào)用時才會執(zhí)行环鲤。你可以在頁面中的任何位置調(diào)用腳本(如果函數(shù)嵌入一個外部的 .js 文件纯趋,那么甚至可以從其他的頁面中調(diào)用)。

建議將函數(shù)在頁面起始位置定義冷离,即 <head> 部分吵冒。
** 創(chuàng)建函數(shù)的語法:**

function 函數(shù)名() { 代碼... }
function 函數(shù)名(var1,var2,...,varX) { 代碼... }
JavaScript 變量的生存期

  • 當(dāng)您在函數(shù)內(nèi)聲明了一個變量后,就只能在該函數(shù)中訪問該變量酒朵。當(dāng)退出該函數(shù)后桦锄,這個變量會被撤銷扎附。這種變量稱為本地變量蔫耽。您可以在不同的函數(shù)中使用名稱相同的本地變量,這是因為只有聲明過變量的函數(shù)能夠識別其中的每個變量留夜。

如果您在函數(shù)之外聲明了一個變量匙铡,則頁面上的所有函數(shù)都可以訪問該變量。這些變量的生存期從聲明它們之后開始碍粥,在頁面關(guān)閉時結(jié)束鳖眼。

JavaScript 循環(huán)

  • 在編寫代碼時,你常常希望反復(fù)執(zhí)行同一段代碼嚼摩。我們可以使用循環(huán)來完成這個功能钦讳,這樣就用不著重復(fù)地寫若干行相同的代碼。

JavaScript 有兩種(也只有2種)不同種類的循環(huán):

for
將一段代碼循環(huán)執(zhí)行指定的次數(shù)
while
當(dāng)指定的條件為 true 時循環(huán)執(zhí)行代碼

語法格式和java或.NET是一樣的枕面。
使用什么語句可以直接跳出多重循環(huán)愿卒?

  • continue 語句可以在符合一定的條件下結(jié)束本輪循環(huán),直接進行下一輪循環(huán)潮秘。
    break? 語句可以在符合一定的條件下直接結(jié)束循環(huán)琼开,代碼會跳轉(zhuǎn)到循環(huán)外靠后的最近一條語句繼續(xù)向下執(zhí)行。

在 .NET 中枕荞,goto 語句可以直接定位到指定的標(biāo)記為繼續(xù)執(zhí)行代碼柜候,而 javascript 中是沒有 goto 語句的,那么怎么直接跳出多重循環(huán)呢躏精?

看下面的示例:

outerloop: // 命名外圈語句
for(var i=0; i<10; i++)
{
innerloop://命名內(nèi)圈語句
for(var j=0; j<10; j++)
{
// 跳出內(nèi)圈循環(huán)
if(j>3){break;}
// 跳出內(nèi)圈循環(huán)
if(i==2){break innerloop;}
// 跳出外圈循環(huán)
if(i==4){break outerloop;}
document.write("i = "+i+" , j = "+j+"<br />");
}
}
document.write("final"+" i = "+i+" , j = "+j);

可以在循環(huán)外設(shè)置標(biāo)記為渣刷,然后使用 break 或 continue 加上標(biāo)記名直接跳出循環(huán)。這里要注意矗烛,和其他語言不同飞主,JS中一旦跳出,程序是不會繼續(xù)從標(biāo)記位處再度往下執(zhí)行代碼的,而是直接執(zhí)行最外層循環(huán)之后的 code碌识,如果后面沒有 code碾篡,那么程序就此結(jié)束。

JavaScript For...In 聲明

For...In 聲明用于遍歷數(shù)組或者對象的屬性(對數(shù)組或者對象的屬性進行循環(huán)操作)筏餐。[也是 for 循環(huán)家族的一員]

下例是使用 for..in 遍歷一個數(shù)組對象开泽,注意這里 .NET 中 foreach 的區(qū)別。
var x
var mycars = new Array();
mycars[0] = "Saab";
mycars[1] = "Volvo";
mycars[2] = "BMW";

for (x in mycars)
{
document.write(mycars[x] + "<br />");
}

JavaScript 事件

事件是可以被 JavaScript 偵測到的行為魁瞪。

  • JavaScript 使我們有能力創(chuàng)建動態(tài)頁面穆律。事件是可以被 JavaScript 偵測到的行為。
    網(wǎng)頁中的每個元素都可以產(chǎn)生某些可以觸發(fā) JavaScript 函數(shù)的事件导俘。比方說峦耘,我們可以在用戶點擊某按鈕時產(chǎn)生一個 onClick 事件來觸發(fā)某個函數(shù)。事件在 HTML 頁面中定義旅薄。

事件舉例:
鼠標(biāo)點擊
頁面或圖像載入
鼠標(biāo)懸浮于頁面的某個熱點之上
在表單中選取輸入框
確認表單
鍵盤按鍵

注意:事件通常與函數(shù)配合使用辅髓,當(dāng)事件發(fā)生時函數(shù)才會執(zhí)行。

onload 和 onUnload

  • 當(dāng)用戶進入或離開頁面時就會觸發(fā) onload 和 onUnload 事件少梁。onload 事件常用來檢測訪問者的瀏覽器類型和版本洛口,然后根據(jù)這些信息載入特定版本的網(wǎng)頁。onload 和 onUnload 事件也常被用來處理用戶進入或離開頁面時所建立的 cookies凯沪。例如第焰,當(dāng)某用戶第一次進入頁面時,你可以使用消息框來詢問用戶的姓名妨马。姓名會保存在 cookie 中挺举。當(dāng)用戶再次進入這個頁面時,你可以使用另一個消息框來和這個用戶打招呼:"Welcome John Doe!"烘跺。

onFocus, onBlur 和 onChange

  • onFocus湘纵、onBlur 和 onChange 事件通常相互配合用來驗證表單。
    下面是一個使用 onChange 事件的例子液荸。用戶一旦改變了域的內(nèi)容瞻佛,checkEmail() 函數(shù)就會被調(diào)用。

<input type="text" size="30" id="email"onchange="checkEmail()
">

onSubmit

  • onSubmit 用于在提交表單之前驗證所有的表單域娇钱。
    下面是一個使用 onSubmit 事件的例子伤柄。當(dāng)用戶單擊表單中的確認按鈕時,checkForm() 函數(shù)就會被調(diào)用文搂。假若域的值無效适刀,此次提交就會被取消。checkForm() 函數(shù)的返回值是 true 或者 false煤蹭。如果返回值為true笔喉,則提交表單取视,反之取消提交。
    <form method="post" action="xxx.htm"onsubmit="return checkForm()">

onMouseOver 和 onMouseOut

  • onMouseOver 和 onMouseOut 用來創(chuàng)建“動態(tài)的”按鈕常挚。

JavaScript Try...Catch 語句

JavaScript - 捕獲錯誤

  • 當(dāng)我們在網(wǎng)上沖浪時作谭,總會看到帶有 runtime 錯誤的 Javascript 警告框,同時會詢問我們“是否進行 debug奄毡?”折欠。像這樣的錯誤信息或許對開發(fā)人員有用,對用戶則未必吼过。當(dāng)錯誤發(fā)生時锐秦,他們往往會選擇離開這個站點。

有兩種在網(wǎng)頁中捕獲錯誤的方法:
使用 try...catch 語句盗忱。(在 IE5+酱床、Mozilla 1.0、和 Netscape 6 中可用)
使用 onerror 事件趟佃。這是用于捕獲錯誤的老式方法扇谣。(Netscape 3 以后的版本可用)

注意:chrome、opera 和 safari 瀏覽器不支持 onerror 事件揖闸∽岫椋【不建議使用此方式】

下一個例子會顯示一個確認框料身,讓用戶來選擇在發(fā)生錯誤時點擊確定按鈕來繼續(xù)瀏覽網(wǎng)頁汤纸,還是點擊取消按鈕來回到首頁。

<html>
<head>
<script type="text/javascript">
var txt=""
function message()
{
try
{
adddlert("Welcome guest!");
}
catch(err)
{
txt = "There was an error on this page.\n\n";
txt += "Click OK to continue viewing this page,\n";
txt += "or Cancel to return to the home page.\n\n";
if(!confirm(txt))
{
document.location.href="http://www.w3school.com.cn/";
}
}
}
</script>
</head>
<body>
<input type="button" value="View message" onclick="message()" />
</body>
</html>

JavaScript Throw 聲明

  • throw 聲明的作用是創(chuàng)建 exception(異常)芹血。你可以把這個聲明與 try...catch 聲明配合使用贮泞,以達到控制程序流并產(chǎn)生精確錯誤消息的目的。
    下面的實例的作用是測定變量 x 的值幔烛。如果 x 的值大于 10 或者小于 0啃擦,錯誤就會被拋出 (throw)。這個錯誤被 catch 的參數(shù)捕獲后饿悬,就會顯示出自定義的出錯信息令蛉。

<html>
<body>
<script type = "text/javascript">
var x = prompt("Enter a number between 0 and 10:","");
try
{
if(x>10)
throw "Err1";
else if(x<0)
throw "Err2";
}
catch(er)
{
if(er == "Err1")
alert("Error! The value is too high");
if(er == "Err2")
alert("Error! The value is too low");
}
</script>
</body>
</html>

JavaScript 特殊字符

你可以在 JavaScript 中使用反斜杠來向文本字符串添加特殊字符。
反斜杠用來在文本字符串中插入省略號狡恬、換行符珠叔、引號和其他特殊字符。

請看下面的 JavaScript 代碼:

var txt="We are the so-called"Vikings"
from the north."document.write(txt)

  • 在 JavaScript 中弟劲,字符串使用單引號或者雙引號來起始或者結(jié)束祷安。這意味著上面的字符串將被截為:We are the so-called。
    要解決這個問題兔乞,就必須把在 "Viking" 中的引號前面加上反斜杠 ()汇鞭。這樣就可以把每個雙引號轉(zhuǎn)換為字面上的字符串凉唐。

var txt="We are the so-called"Vikings"
from the north."document.write(txt)
現(xiàn)在 JavaScript 就可以輸出正確的文本字符串了:We are the so-called "Vikings" from the north。

JavaScript 指導(dǎo)方針

JavaScript 對大小寫敏感

名為 "myfunction" 的函數(shù)和名為 "myFunction" 的函數(shù)是兩個不同的函數(shù)霍骄,同樣台囱,變量 "myVar" 和變量 "myvar" 也是不同的。JavaScript 對大小寫敏感 - 所以當(dāng)您創(chuàng)建或使用變量读整、對象及函數(shù)時玄坦,請注意字符的大小寫。

空格

  • JavaScript 會忽略多余的空格绘沉。所以您可以在代碼中添加適當(dāng)?shù)目崭窦彘梗沟么a的可讀性更強。下面的兩行是等效的:
    name="Hege"name = "Hege"

換行

  • 您可以在文本字符串內(nèi)部使用反斜杠對代碼進行折行车伞。下面的例子是正確的:

document.write("Hello \World!")
但是不能像這樣折行:
document.write ("Hello World!")

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末择懂,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子另玖,更是在濱河造成了極大的恐慌困曙,老刑警劉巖,帶你破解...
    沈念sama閱讀 212,816評論 6 492
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件谦去,死亡現(xiàn)場離奇詭異慷丽,居然都是意外死亡,警方通過查閱死者的電腦和手機鳄哭,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,729評論 3 385
  • 文/潘曉璐 我一進店門要糊,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人妆丘,你說我怎么就攤上這事锄俄。” “怎么了勺拣?”我有些...
    開封第一講書人閱讀 158,300評論 0 348
  • 文/不壞的土叔 我叫張陵奶赠,是天一觀的道長。 經(jīng)常有香客問我药有,道長毅戈,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 56,780評論 1 285
  • 正文 為了忘掉前任愤惰,我火速辦了婚禮苇经,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘羊苟。我一直安慰自己塑陵,他們只是感情好,可當(dāng)我...
    茶點故事閱讀 65,890評論 6 385
  • 文/花漫 我一把揭開白布蜡励。 她就那樣靜靜地躺著令花,像睡著了一般阻桅。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上兼都,一...
    開封第一講書人閱讀 50,084評論 1 291
  • 那天嫂沉,我揣著相機與錄音,去河邊找鬼扮碧。 笑死趟章,一個胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的慎王。 我是一名探鬼主播蚓土,決...
    沈念sama閱讀 39,151評論 3 410
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼赖淤!你這毒婦竟也來了蜀漆?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 37,912評論 0 268
  • 序言:老撾萬榮一對情侶失蹤咱旱,失蹤者是張志新(化名)和其女友劉穎确丢,沒想到半個月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體吐限,經(jīng)...
    沈念sama閱讀 44,355評論 1 303
  • 正文 獨居荒郊野嶺守林人離奇死亡鲜侥,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 36,666評論 2 327
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了诸典。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片描函。...
    茶點故事閱讀 38,809評論 1 341
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖搂赋,靈堂內(nèi)的尸體忽然破棺而出赘阀,到底是詐尸還是另有隱情益缠,我是刑警寧澤脑奠,帶...
    沈念sama閱讀 34,504評論 4 334
  • 正文 年R本政府宣布,位于F島的核電站幅慌,受9級特大地震影響宋欺,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜胰伍,卻給世界環(huán)境...
    茶點故事閱讀 40,150評論 3 317
  • 文/蒙蒙 一齿诞、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧骂租,春花似錦祷杈、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,882評論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽宿刮。三九已至,卻和暖如春私蕾,著一層夾襖步出監(jiān)牢的瞬間僵缺,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 32,121評論 1 267
  • 我被黑心中介騙來泰國打工踩叭, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留磕潮,地道東北人。 一個月前我還...
    沈念sama閱讀 46,628評論 2 362
  • 正文 我出身青樓容贝,卻偏偏與公主長得像自脯,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子斤富,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 43,724評論 2 351

推薦閱讀更多精彩內(nèi)容

  • Android 自定義View的各種姿勢1 Activity的顯示之ViewRootImpl詳解 Activity...
    passiontim閱讀 171,867評論 25 707
  • 成長的很大一部分冤今,是接受。自己作了就要自己受茂缚,為自己做的選擇買單也是一種能力戏罢。都是第一次做人,憑什么我要讓著你……屮
    樣兒r閱讀 145評論 3 3
  • Android 開發(fā)中脚囊,經(jīng)常有從服務(wù)器下載數(shù)據(jù)的需求出現(xiàn)龟糕,尤其是在線更新App的情形。其基本思路是根據(jù)本地的App...
    YungFan閱讀 18,756評論 33 68
  • 一個老頭的鄙視 1 與一個老頭閑聊悔耘,沒想到卻被他狠狠的鄙視了一番讲岁,在他的面前真真的被他的驕傲所打敗。 原以為老頭也...
    生達成長規(guī)劃閱讀 169評論 0 1
  • 更多教程請移步至:洛涼博客 求助請移步至:Python自學(xué)技術(shù)交流 一:安裝 大家自行安裝下載mongoDB安裝包...
    Mo丶染洛涼閱讀 434評論 2 5