JavaScript的運(yùn)行環(huán)境和代碼位置
編寫JavaScript腳本不需要任何特殊的軟件,一個(gè)文本編輯器和一個(gè)Web瀏覽器就足夠了,JavaScript代碼就是運(yùn)行在Web瀏覽器中。
用JavaScript編寫的代碼必須嵌在一份html文檔才能得到執(zhí)行,這可以通過兩種方法得到,第一種是將JavaScript代碼直接寫在html文件中,這多用于僅適用于一個(gè)頁面的JS程序;另一種是把JavaScript代碼存入一個(gè)獨(dú)立的文件中(.js作為擴(kuò)展名),在利用<Script>標(biāo)簽的src屬性指向該文件.
將JavaScript直接嵌入頁面文件中
<%@ page contentType="text/html; charset=UTF-8" %>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<html>
<head>
<title>歡迎進(jìn)入"我的事務(wù)備忘錄"</title>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<script src="web/js/strUtil.js" type="text/javascript"></script>
</head>
<body>
<div>這個(gè)頁面應(yīng)該很快消失,如果它停止說明Web容器已經(jīng)停止運(yùn)作了,或JavaScript功能未開啟
<form method=post action="ShowPage?page=login">
</form>
<div>
</body>
</html>
<script LANGUAGE="JavaScript">
<!--
document.body.onload=function(){
document.forms[0].submit();
}
//-->
</script>
將JavaScript存入單獨(dú)的文件中(頁面文件)
<%@ page contentType="text/html; charset=UTF-8" %>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<html>
<head>
<title>"我的事務(wù)備忘錄"用戶登錄頁面</title>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<script src="web/js/ajax.js" type="text/javascript"></script>
<link rel="stylesheet" rev="stylesheet" href="web/css/style.css"
type="text/css" />
</head>
<body>
<div id="branding">歡迎進(jìn)入"個(gè)人事務(wù)備忘錄",請輸入您的用戶名和密碼,再按登錄鍵登錄
<form method=post action="ShowPage?page=loginCheck">
<table bgcolor="#ffffff" id="TbSort" class="Listing" width="200" align=center>
<tbody id="loginTable">
<tr><th align="center" colspan=3>用戶登錄.</th></tr>
<tr>
<td width=50>用戶名:</td>
<td width=150><input type="text" name="userName" value=""
style="width: 300px; height: 20px" /></td>
</tr>
<tr>
<td width=50>密碼:</td>
<td width=150><input type="text" name="userPswd" value=""
style="width: 300px; height: 20px" /></td>
</tr>
<tr>
<td width=50></td>
<td width=150><input type="submit" value="登錄"
style="width: 100px; height: 20px" /></td>
</tr>
</tbody>
</table>
</form>
<div>
</body>
</html>
將JavaScript存入單獨(dú)的文件中(ajax.js)
var prjName="/MyTodoes/";
var ajaxObj;
function createAjaxObject(){
try{return new ActiveXObject("Msxml2.XMLHTTP");}catch(e){};
try{return new ActiveXObject("Microsoft.XMLHTTP");}catch(e){};
try{return new XMLHttpRequest();}catch(e){};
alert("XmlHttpRequest not supported!");
return null;
}
function $(id){
return document.getElementById(id);
}
JavaScript中的語句和注釋
JavaScript中的語句和Java中一樣,也是一行書寫一條語句,末尾加上分號’;’,雖然js中也可以把多條語句寫在一行,但推薦不要這樣做.
JavaScript中注釋也和Java中一樣,以// 來注釋單行,/*….*/來注釋多行,雖然HTML風(fēng)格的注釋<!-- ***** --> 在JS中也有效,但建議不要這樣做.
JavaScript中的變量
在js中,變量允許字母,數(shù)字,美元符號和下劃線字符.變量定義使用var關(guān)鍵字,如
var age;
age=23;
var name=“andy”;
雖然js允許程序員可以直接對變量進(jìn)行賦值而無需提前對它們做出聲明,但我們強(qiáng)烈建議不要這樣做.
Js中變量和其它語法元素都是區(qū)分字母大小寫的,如變量age,Age,AGE沒有任何關(guān)系,它們都不是同一個(gè)變量.
JavaScript是一種弱類型語言
和強(qiáng)制要求程序員對數(shù)據(jù)類型做出聲明的強(qiáng)類型(Strongly typed)程序設(shè)計(jì)語言如java,C#等不一樣,js不要求程序員進(jìn)行類型說明,這就是所謂的弱類型”weakly typed”語言.這意味著程序員可以隨意改變某個(gè)變量的數(shù)據(jù)類型.
以下寫法在Java中是絕對不允許的,但在js中完全沒有問題:
var age=23;
age=“Twenty three”
Js并不關(guān)心age的值是字符串還是變量.
JavaScript中的數(shù)據(jù)類型-字符串
字符串必須放在單引號或雙引號中.如
var name=“Andy”;
var name=‘Bill’;
一般情況下宜使用雙引號,但如果字符串中有雙引號則應(yīng)該把字符串放在單引號中,反之則應(yīng)該把字符串放在雙引號中.
JavaScript中的數(shù)據(jù)類型-數(shù)值
Js中并沒有int,float,double,long的區(qū)別,它允許程序員使用任意位數(shù)的小數(shù)和整數(shù),實(shí)際上js中的數(shù)值應(yīng)該被稱為浮點(diǎn)數(shù).
如:
var salary=10000;
var price=10.1;
var temperature=-6;
JavaScript中的數(shù)據(jù)類型-布爾值
Js中的布爾值和Java中的一致,true表示真,false表示假,如:
var isMale=true;
var isFemale=false;
注意布爾值true和false不要寫成了字符串”true”和’false’.
JS中的函數(shù)
如果需要多次使用同一組語句,可以把這些語句打包成一個(gè)函數(shù)。所謂函數(shù)就是一組允許人們在代碼中隨時(shí)調(diào)用的語句。從效果上看,每個(gè)函數(shù)都相當(dāng)于一個(gè)短小的腳本。
和Java中每個(gè)函數(shù)都在類中不一樣,JS中函數(shù)不必屬于一個(gè)類,在使用上它類似于Java中的靜態(tài)公有函數(shù),只要引入這個(gè)函數(shù)所在的文件就可以使用它。
JS中函數(shù)的語法
JS中,一個(gè)函數(shù)的大致語法如下:
function fname(args){
statements;
}
Function是函數(shù)的固定標(biāo)志;fname是函數(shù)名;args是函數(shù)參數(shù),它可以有很多個(gè),只要你把它們用逗號分割開來即可;statements是其中的語句,每句結(jié)尾都和java中一樣用“;”表示結(jié)束。
在定義了這個(gè)函數(shù)的腳本(頁面)中,你可以從任意位置去調(diào)用這個(gè)函數(shù);引入這個(gè)頁面后,你還可以從其它頁面訪問它。
一般來說,對于共通性強(qiáng),適用面廣,會在多個(gè)頁面中調(diào)用的函數(shù),我們一般把它們放在一個(gè)JS頁面中,然后由需要使用這些函數(shù)的頁面引入它們;而對于只適用于一個(gè)頁面的函數(shù),還是把它放在單個(gè)頁面中較好。
JS函數(shù)的返回值
在JS中,函數(shù)不僅能夠以參數(shù)的形式接受數(shù)據(jù),運(yùn)行代碼,它和其它編程語言中的函數(shù)一樣,可以返回?cái)?shù)據(jù)。
讓JS函數(shù)返回?cái)?shù)據(jù),你不需要也不能在函數(shù)簽名上動任何手腳,只需要用return語句返回你想返回的數(shù)字即可,舉例如下:
function substract(op1,op2){
return op1-op2; }
}
JS中變量的作用域
在JS中,我們提倡用var來定義一個(gè)變量,凡是變量就會有作用域的問題,根據(jù)定義方式和位置的不同,它既可能是全局的,也有可能是局部的。
用var定義在腳本文件中,不屬于任何一個(gè)函數(shù)的變量,它的作用域就是全局性的,它可以在腳本中的任何位置被引用,包括有關(guān)函數(shù)的內(nèi)部。全局變量的作用域是整個(gè)腳本。
用var定義在函數(shù)中的變量,它的作用域就是局部性的,它的作用域僅限于這個(gè)函數(shù),在函數(shù)的外部是無法使用它的。
不用var定義在函數(shù)中的變量,它的作用域是全局的,如果你的腳本里已經(jīng)存在一個(gè)與之同名的變量,這個(gè)函數(shù)將覆蓋那個(gè)現(xiàn)有變量的值。
定義函數(shù)時(shí),我們必須明確的把它內(nèi)部的變量都明確的聲明為局部變量,如果從來沒有忘記在函數(shù)中使用var關(guān)鍵字,就可以避免任何形式的二義性隱患。
JS中的數(shù)組
在JS中,我們使用Array關(guān)鍵字聲明數(shù)組,在聲明時(shí)對數(shù)組長度進(jìn)行限定,如:
var arr=Array(3);
有時(shí)運(yùn)行起來才知道數(shù)組長度,JS中我們也可以這樣定義數(shù)組:
var arr=Array();
向數(shù)組中添加元素時(shí)你需要給出新元素的值,還需要在數(shù)組中為新元素制定存放位置,這個(gè)位置由下標(biāo)給出,如arr[1]=4。
在JS中定義數(shù)組的例子
定義方式一:
var arr=Array(3);
arr[0]=“劉備”; arr[1]=“關(guān)于”; arr[2]=“張飛”;
定義方式二:
var arr=Array();
arr[0]=3; arr[1]=4;arr[2]=5;
定義方式三:
Var arr=Array(“1”,2,true);
定義方式四:
var arr=[“征東”,”平西”,”鎮(zhèn)南”,”掃北”];