JavaScript 語言基礎(chǔ)

目前,我們一旦談?wù)摰骄W(wǎng)頁編程,就離不開 HTML熬的、CSS 與 JavaScript 這 3 種技術(shù)藻雌。 由 HTML 負(fù)責(zé)描述頁面數(shù)據(jù)和信息,CSS 負(fù)責(zé)控制外觀,JavaScript 則用于響應(yīng)用戶的操 作,為網(wǎng)頁添加動(dòng)態(tài)的功能,我們也常稱之為動(dòng)態(tài)網(wǎng)頁編程,即 DHTML粉楚。
JavaScript 的引入
JavaScript 可以通過<script>標(biāo)記嵌入在 HTML 頁面中,也可以保存為擴(kuò)展名為.js 的文件后通過<script>標(biāo)記引入到網(wǎng)頁中,如下例所示:

<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<script type="text/javascript">
//JavaScript 代碼 </script>
<!--src 屬性為 JS 文件的位置 -->
<script type="text/javascript" src="js文件"></script> 
</head>
<body>
</body>
</html>

JavaScript 中的變量

1.變量的定義
雖然 JavaScript 支持變量未經(jīng)定義直接使用,但推薦進(jìn)行變量定義,否則變量的生命 周期難以確定曹货。
在定義變量時(shí),因?yàn)?JavaScript 為弱類型語言,所以不需要指定變量類型,只需要指 定變量名稱即可,也可以為變量賦初始值奖亚。定義變量時(shí)可以使用 var 關(guān)鍵字徘跪。
注意:因?yàn)镴avaScript代碼總是在同一網(wǎng)頁內(nèi)有效,并不能跨網(wǎng)頁運(yùn)行,所 以也不需要定義類似于Java語言中的訪問修飾符(public甘邀、private等)。
JavaScript 變量的命名規(guī)則與 Java 相似,只能包含數(shù)字垮庐、字母松邪、下畫線和$符號(hào),大小 寫敏感,不可以使用 JavaScript 的關(guān)鍵字和保留字。

<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<script type="text/javascript">
     var a; //定義變量
     var b = 3; //定義變量并賦初始值
     var c = 'String', d = "String";//定義多個(gè)變量
</script>
</head>
<body>
</body>
</html>

2.變量的類型
雖然不能在定義變量時(shí)指定變量類型,但是 JavaScript 會(huì)根據(jù)變量的值自動(dòng)決定類型, JavaScript 中常見的內(nèi)置變量類型如下哨查。

  • 數(shù)字型:可以存儲(chǔ)小數(shù)或整數(shù)逗抑。
    *? 布爾型:可以存儲(chǔ) true 或 false。
    *? 字符串:屬于引用類型,可以存儲(chǔ)字符串寒亥。
    *? 數(shù)組:屬于引用類型,存儲(chǔ)多項(xiàng)數(shù)據(jù)邮府。

如果要將字符串轉(zhuǎn)換為數(shù)字類型,可以使用 parseInt 或 parseFloat 方法,如果無法轉(zhuǎn)換
為數(shù)字,則 JavaScript 會(huì)返回特殊值“NaN(Not a Number)”,如下所示:

<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<script type="text/javascript">
var a = 3;
var b = "3";
var c = a + b;                         //結(jié)果是33
    var d = a + parseInt(b);    //結(jié)果是6
    var e = a + (b - 0);            //結(jié)果是6 
    var f = parseInt('a');         //結(jié)果是NaN
</script>
</head>
<body>
</body>
</html>

3.注釋與特殊符號(hào)
JavaScript 語言中的注釋與 Java 語言中的注釋規(guī)則相同,支持單行注釋(//)與多行注 釋(/.../),注意不能在 JavaScript 內(nèi)部使用 HTML 語言中的“”注釋。在 JavaScript 中字符串可以使用雙引號(hào)或單引號(hào)引起來,在不引起沖突的情況下可以混用,也可以使用 反斜杠進(jìn)行轉(zhuǎn)義,如下例所示:

<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<script type="text/javascript"> 
      //a的值為It's mine.
      var a = "It's mine.";
      //b的值為he say : "good".
      var b = 'he say : "good".'; 
      //c的值he say : "It's good".
      var c = 'he say : "It\'s good".';
</script>
</head>
<body>
</body>
</html>

4.運(yùn)算符
運(yùn)算符與表達(dá)式基本與 Java 相同,常用的運(yùn)算符如表 7-1 所示(優(yōu)先級(jí)自上而下)溉奕。

屏幕快照 2017-02-28 下午3.38.56.png

JavaScript 中的流程控制語句

JavaScript 語言中的流程控制語句與 Java 語言中幾乎完全一致,分支流程可以使用 if-else 結(jié)構(gòu)或 switch 結(jié)構(gòu),循環(huán)流程可以使用 for 或 while 循環(huán),具體語法如下褂傀。
1.if 語句的語法結(jié)構(gòu)
if 語句的語法結(jié)構(gòu)如下:

if (條件表達(dá)式A) {
    //條件表達(dá)式 A 為 true,所執(zhí)行的代碼塊
 } else if(條件表達(dá)式)B {
    //條件表達(dá)式 B 為 true,所執(zhí)行的代碼塊
} else {
    // 條件表達(dá)式 A 和條件表達(dá)式 B 都為 false,所執(zhí)行的代碼塊 
}

2.switch 語句的語法結(jié)構(gòu)
switch 語句的語法結(jié)構(gòu)如下:

switch (表達(dá)式) { 
    case值1 :
         //表達(dá)式與值 1 匹配時(shí),所執(zhí)行的代碼塊 
          break;
case值2 :
        //表達(dá)式與值 2 匹配時(shí),所執(zhí)行的代碼塊
        break;
  default :
         //所有 case 值都與表達(dá)式不匹配時(shí),所執(zhí)行的代碼塊 
}

3.for 語句的語法結(jié)構(gòu)
for 語句的語法結(jié)構(gòu)如下:

for (初始化語句; 循環(huán)判斷條件; 循環(huán)執(zhí)行語句) {
        //循環(huán)體
 }

4.while 語句的語法結(jié)構(gòu)
while 語句的語法結(jié)構(gòu)如下:

 while (循環(huán)判斷條件) { 
    //循環(huán)體
}

5.do...while 語句的語法結(jié)構(gòu)
do...while 語句的語法結(jié)構(gòu)如下:

do {
    //循環(huán)體
} while (循環(huán)判斷條件);

6.綜合演示
下例綜合使用各種流程結(jié)構(gòu)通過 JavaScript 動(dòng)態(tài)在頁面中生成一個(gè)隔行換色的 HTML表格,其中用到了 document.write()方法,該方法用于向 HTML 頁面中輸出內(nèi)容。

<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<script type="text/javascript">
//rows 為表格的行數(shù),cols 為表格的列數(shù)
var rows = 6;
var cols = 8;
document.write('<table width="100%" border="1">'); document.write('<caption>動(dòng)態(tài)生成表格</caption>'); document.write('<tbody>');
    for (var row = 0; row < rows; row++) {
        if (row % 2 == 0) {
            document.write('<tr bgcolor="#cccccc">');
        } else {
            document.write('<tr>');
        }
        for (var col = 0; col < cols; col++) {
            document.write('<td>' + col + '</td>');
        }
        document.write('</tr>');
    }
    document.write('</tbody>');
    document.write('</table>');
</script>
</head>
<body>
</body>
</html>

請(qǐng)注意,本例 document.write()方法是動(dòng)態(tài)地生成 HTML 代碼并輸出到頁面中,并沒有 改變 HTML 源文件,只改變了瀏覽器內(nèi)存中的 DOM(DOM 即文檔對(duì)象模型,詳細(xì)內(nèi)容請(qǐng) 參看第 10 章)結(jié)構(gòu)加勤。故如果通過瀏覽器的“查看源代碼”功能查看該頁面代碼并不會(huì)看到 輸出的表格代碼,但如果通過瀏覽器的 DOM 查看器則可以看到生成的結(jié)果.

JavaScript 中的方法

1.JavaScript 中的常用方法
JavaScript 中提供了很多常用的方法,如上例中用到的 document.write 方法,現(xiàn)介紹 3個(gè)用于與用戶交互的方法.


屏幕快照 2017-02-28 下午4.16.53.png

請(qǐng)注意這 3 個(gè)方法顯示的對(duì)話框都是模態(tài)對(duì)話框,即會(huì)停止當(dāng)前腳本的運(yùn)行直到用戶 關(guān)閉對(duì)話框?yàn)橹?下面的例子綜合使用了這 3 個(gè)方法

<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<script type="text/javascript">
    alert("現(xiàn)在演示 alert仙辟、confirm 與 prompt 方法");
    var name = prompt("請(qǐng)輸入您的姓名", "匿名"); 
    var flag = confirm("請(qǐng)確認(rèn)您的姓名:" + name);
     if (flag) {
        alert('確認(rèn)無誤!'); 
    } else {
        alert('確認(rèn)失敗');
    }
</script>
</head>
<body>
</body>
</html>

2.自定義方法
JavaScript 語言中的自定義方法與 Java 語言有較大的不同。
第一 ,JavaScript 中沒有方法 修飾符,所有方法都是本頁面內(nèi)可以訪問;
第二 ,由于 JavaScript 是弱類型語言,所以不需 要聲明方法的返回值類型;
第三 ,JavaScript 中的方法不支持重載,但是支持類似于 Java 中 變長(zhǎng)參數(shù)的特性鳄梅。
定義一個(gè)方法的語法如下:

function 方法名 ( 參數(shù)1, 參數(shù)2, ... ) {
 //函數(shù)體
return 返回值;
}

下例演示了通過定義方法計(jì)算兩個(gè)數(shù)的和:

<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<script type="text/javascript">
    function add(a, b) {
        //如果不通過 parseInt 方法轉(zhuǎn)換為數(shù)字,會(huì)進(jìn)行字符串的連接 
        var c = parseInt(a) + parseInt(b);
        return c;
    }
    var a = prompt("請(qǐng)輸入第一個(gè)數(shù)", 0);
    var b = prompt("請(qǐng)輸入第二個(gè)數(shù)", 0);
      //請(qǐng)注意變量的作用范圍
    var c = add(a, b);
    alert("計(jì)算結(jié)果是:" + c);
</script>
</head>
<body>
</body>
</html>

如果想計(jì)算不確定數(shù)目的若干個(gè)數(shù)字的和,就可以使用 JavaScript 中的一個(gè)特殊數(shù)組, 名為 arguments,這個(gè)數(shù)組用來保存調(diào)用方法時(shí)傳遞的所有參數(shù),如下例所示:

<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<script type="text/javascript">
    function add() {
        //獲取 arguments 數(shù)組的長(zhǎng)度
        var length = arguments.length;
        var c = 0;
        for (var i = 0; i < length; i++) {
            c += parseInt(arguments[i]);
         }
        return c;
        }
       document.write("<p>無參數(shù) = " + add());
       document.write("<p>1 = " + add(1)); 
       document.write("<p>1,3 = " + add(1,3)); 
       document.write("<p>1,3,5 = " + add(1,3,5)); 
       document.write("<p>1,3,5,7,9 = " + add(1,3,5,7,9));
</script>
</head>
<body>
</body>
</html>

JavaScript 中函數(shù)的參數(shù)還有更靈活的運(yùn)用方式,如下例所示:

<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<script type="text/javascript">
    function output(times, char, end) {
        var s = '';
        for (var i = 0; i < times; i++) {
            if (char) {
                s+=char;
            } else {
                  s+='*'; 
              }
        }
        document.write(s);
        if (end) {
            document.write(end);
        } else {
            document.write("<br/>");
        }
}
    output(20);
    output(20, "O");
    output(20);
    output(20, "H", "<hr/>");
    output(20, '![](07_8.png)', "<hr/>");
</script>
</head>
<body>
</body>
</html>

注意:因?yàn)镴avaScript中方法的參數(shù)長(zhǎng)度是可變的,所以JavaScript并不支持 類似于Java語言的方法重載特性叠国。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市戴尸,隨后出現(xiàn)的幾起案子粟焊,更是在濱河造成了極大的恐慌,老刑警劉巖,帶你破解...
    沈念sama閱讀 219,039評(píng)論 6 508
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件吆玖,死亡現(xiàn)場(chǎng)離奇詭異筒溃,居然都是意外死亡,警方通過查閱死者的電腦和手機(jī)沾乘,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,426評(píng)論 3 395
  • 文/潘曉璐 我一進(jìn)店門怜奖,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人翅阵,你說我怎么就攤上這事歪玲。” “怎么了掷匠?”我有些...
    開封第一講書人閱讀 165,417評(píng)論 0 356
  • 文/不壞的土叔 我叫張陵滥崩,是天一觀的道長(zhǎng)。 經(jīng)常有香客問我讹语,道長(zhǎng)钙皮,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 58,868評(píng)論 1 295
  • 正文 為了忘掉前任顽决,我火速辦了婚禮短条,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘才菠。我一直安慰自己茸时,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,892評(píng)論 6 392
  • 文/花漫 我一把揭開白布赋访。 她就那樣靜靜地躺著可都,像睡著了一般。 火紅的嫁衣襯著肌膚如雪蚓耽。 梳的紋絲不亂的頭發(fā)上渠牲,一...
    開封第一講書人閱讀 51,692評(píng)論 1 305
  • 那天,我揣著相機(jī)與錄音田晚,去河邊找鬼嘱兼。 笑死国葬,一個(gè)胖子當(dāng)著我的面吹牛贤徒,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播汇四,決...
    沈念sama閱讀 40,416評(píng)論 3 419
  • 文/蒼蘭香墨 我猛地睜開眼接奈,長(zhǎng)吁一口氣:“原來是場(chǎng)噩夢(mèng)啊……” “哼!你這毒婦竟也來了通孽?” 一聲冷哼從身側(cè)響起序宦,我...
    開封第一講書人閱讀 39,326評(píng)論 0 276
  • 序言:老撾萬榮一對(duì)情侶失蹤,失蹤者是張志新(化名)和其女友劉穎背苦,沒想到半個(gè)月后互捌,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體潘明,經(jīng)...
    沈念sama閱讀 45,782評(píng)論 1 316
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,957評(píng)論 3 337
  • 正文 我和宋清朗相戀三年秕噪,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了钳降。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 40,102評(píng)論 1 350
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡腌巾,死狀恐怖遂填,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情澈蝙,我是刑警寧澤吓坚,帶...
    沈念sama閱讀 35,790評(píng)論 5 346
  • 正文 年R本政府宣布,位于F島的核電站灯荧,受9級(jí)特大地震影響礁击,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜逗载,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,442評(píng)論 3 331
  • 文/蒙蒙 一客税、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧撕贞,春花似錦更耻、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,996評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至号涯,卻和暖如春目胡,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背链快。 一陣腳步聲響...
    開封第一講書人閱讀 33,113評(píng)論 1 272
  • 我被黑心中介騙來泰國打工誉己, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人域蜗。 一個(gè)月前我還...
    沈念sama閱讀 48,332評(píng)論 3 373
  • 正文 我出身青樓巨双,卻偏偏與公主長(zhǎng)得像,于是被迫代替她去往敵國和親霉祸。 傳聞我的和親對(duì)象是個(gè)殘疾皇子筑累,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 45,044評(píng)論 2 355

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

  • 1. Java基礎(chǔ)部分 基礎(chǔ)部分的順序:基本語法,類相關(guān)的語法丝蹭,內(nèi)部類的語法慢宗,繼承相關(guān)的語法,異常的語法,線程的語...
    子非魚_t_閱讀 31,639評(píng)論 18 399
  • 原文: https://github.com/ecomfe/spec/blob/master/javascript...
    zock閱讀 3,372評(píng)論 2 36
  • importUIKit classViewController:UITabBarController{ enumD...
    明哥_Young閱讀 3,814評(píng)論 1 10
  • 你說太容易得到的東西不好 別委屈了自己 專八镜沽,這一輩子都過不了了 兩次機(jī)會(huì)都用完了 很多東西 正在無聲無息地失去著...
    8454a51837ec閱讀 155評(píng)論 0 0
  • 很久都沒有這種感覺了敏晤!最近一年心態(tài)已經(jīng)慢慢好多了,也許是逃避缅茉,也許是生活真的變好很多…… 小時(shí)候不...
    吶妞真贊閱讀 476評(píng)論 0 0