函數(shù)function類似于java語(yǔ)言中的方法Method,也是一段可以完成特定功能的代碼片段,并且這段代碼片段是可以重復(fù)利用的。在javascript中定義函數(shù)的語(yǔ)法:
定義函數(shù):
第一種方式:
function 函數(shù)名(形式參數(shù)列表){ //形參是局部變量
函數(shù)體由js語(yǔ)句構(gòu)成;
}
調(diào)用函數(shù):
函數(shù)名(實(shí)參);
第二種方式:
函數(shù)名 = function(形式參數(shù)列表){
函數(shù)體由js語(yǔ)句構(gòu)成;
}
JS語(yǔ)法是弱類型的,所以不需要指定函數(shù)的返回值類型。但是JS的函數(shù)仍然有返回值。是否返回值取決于程序員的代碼決定。包括函數(shù)的形參類型也不需要指定。
JS中沒(méi)有函數(shù)重載的概念,在同一個(gè)script標(biāo)簽中,函數(shù)名不能重名。
示例:
<html>
<head>
<title>function_01</title>
<script language="javascript">
function sayHello(ename){ //定義函數(shù)
window.document.write("<h1>Hello "+ename+"</h1>");
}
sayHello("JACK"); //調(diào)用函數(shù)
function getUser(id,name){//定義函數(shù)
return id + "-->" + name;
}
document.write("<center>"+getUser(77,"JACK")+"</center>");
alert(getUser(45)); //參數(shù)個(gè)數(shù)不匹配也可以調(diào)用,參數(shù)多或少都可以
</script>
</head>
</html>
示例:
<html>
<head>
<title>JS中函數(shù)初步</title>
<script language="javascript">
function sayHello(username){
//alert(username + ",你好!");
//document是JS中的DOM的頂層對(duì)象
//document內(nèi)置對(duì)象中有一個(gè)write方法,可以向?yàn)g覽器輸出HTML代碼。
//document.write(username + ",你好!");
document.write("<center><font color='blue' size='7'>" + username + ",你好!</font></center>");
}
//函數(shù)還可以這樣定義
/*
sayHello = function(username){
alert(username + ",你好!");
}
*/
//調(diào)用函數(shù)
//sayHello("李四");
</script>
</head>
<body>
<form name="form1">
<input type="text" name="username"/>
<!--
要獲取form表單中的一個(gè)標(biāo)簽的value? form的名字.標(biāo)簽的名字.value
-->
<inputtype="button"value="sayHello"onclick="sayHello(form1.username.value);"/>
</form>
</body>
</html>
示例:
<html>
<head>
<title>JS中函數(shù)初步</title>
<script language="javascript">
//JS中的函數(shù)也可以有返回值,也可以沒(méi)有。
//JS函數(shù)最后可以編寫return語(yǔ)句,也可以不寫。
function validateName(username){
//字符串length屬性用來(lái)獲取字符串的長(zhǎng)度。
if(username.length<6){
return false;
}
return true;
}
//alert(validateName("jack123123")?"合法":"不合法");
/*
var flag = validateName("jack");
if(flag){
alert("合法");
}else{
alert("不合法");
}
*/
</script>
</head>
<body>
<!--
失去焦點(diǎn)事件:blur
失去焦點(diǎn)事件句柄:onblur
以下程序中的this表示當(dāng)前對(duì)象,當(dāng)前對(duì)象是input框。
this.value是input框的值。
-->
<input
type="text"
name="username"
onblur="alert(validateName(this.value)?'合法':'不合法');" />
</body>
</html>
示例:
<html>
<head>
<title>JS中函數(shù)初步</title>
<script language="javascript">
/*
js中函數(shù)聲明的時(shí)候,不僅是一個(gè)函數(shù)的聲明,還是一種類型的定義。
JS中類的定義和構(gòu)造方法于一體。
*/
//這里的Dept不但是一個(gè)函數(shù)名,還是一個(gè)類名。
Dept = function(deptno,dname,loc){
alert("能執(zhí)行嗎?");
//this表示當(dāng)前對(duì)象。
//屬性
this.deptno = deptno;
this.dname = dname;
this.loc = loc;
//動(dòng)作
this.print = function(){
document.write("部門編號(hào):" + this.deptno + ",部門名:" + this.dname + ",部門地理位置:" + this.loc);
}
alert("end-->能執(zhí)行嗎?");
}
//創(chuàng)建對(duì)象
var d1 = new Dept(10,"SALES","NEW YORK");
d1.print();// 調(diào)用對(duì)象的方法
alert(d1.deptno);//調(diào)用對(duì)象的屬性
alert(d1.dname);
alert(d1.loc);
//這里不會(huì)創(chuàng)建對(duì)象,這只是普通方法調(diào)用。
Dept(20,"MYSALES","BEIJING");
</script>
</head>
<body>
</body>
</html>