標籤:修改 return 按鈕 var 引用 列印 重要 def 基礎
【函數的聲明及調用】
function 函數名(參數1,參數2,....){
//函數體代碼
return傳回值;
}
1、函數的調用:
①直接調用:函數名(參數1的值,參數2的值,....)
②事件調用:在HTML標籤中,使用事件名="函數名()"
<button onclick="saysth(‘哈哈哈‘,‘yellow‘)">點擊按鈕,列印內容</button>
2、函數的命名規則
①函數名必須要符合小駝峰法則!!首字母小寫,之後每個單字首大寫;
②函數名後面的()中,可以有參數,也可以沒有參數,分別稱為有參參數,和無參參數
③聲明函數時的參數列表,稱為形參列表,形式參數。(變數的名字)
function saysth(str,color){}
調用函數時的參數列表,稱為實參列表,實際參數。(變數的賦值)
saysth("你真帥!!","red")
④函數的形參列表的個數,與實參列表個數。沒有實際的關聯關係。
函數參數的個數,取決於實參列表。
如果實參列表的個數<形參列表,則未賦值的形參,將為undefined>
⑤函數可以有傳回值,使用return返回結果,調用函數時,可以使用一個變數接受函數的返回結果,如果函數沒有傳回值,則接受的結果為undefined;
function func(){
return "haha";
}
var num=func(); //num="haha"
⑥函數變數的範圍;
在函數中,使用var聲明的變數為局部變數,只能在函數內部訪問:
不使用var聲明的變數,為全域變數,在函數外面也能訪問:
函數的形參列表,預設為函數的局部變數,只能在函數內部使用,
⑦函數的聲明與函數的調用,沒有先後之分,即,可以再聲明函數前,調用函數;
func();//聲明func之前調用也是可以的。
function func(){}
【匿名函數的聲明使用】
1、聲明一個匿名函數,直接賦值給某一個事件;
window.onload = function(){}
2、使用匿名函數的運算式,將匿名函數,賦值給一個變數。
聲明: var func=function(){}
調用: func();
js代碼在執行的順序問題
js代碼在運行時,會分為兩大部分,奸詐裝載和執行階段,
檢查裝載階段:會線檢測代碼的語法錯誤。進行變數,函數的聲明。
執行階段,變數的賦值,函數的調用,都屬於執行階段,
以下代碼為例
console.log(num);//undefined
var num = 10;
func1(); //函數可以正常執行
function func1(){}
func2(); //函數不能執行,列印func2是顯示為undefined
var func2 = function(){}
檢查裝載階段
console.log(num)
function func1(){}
var func2
代碼執行階段
console.log(num);//undefined
var num = 10;
func2();
func2 = function(){}
注意使用匿名函數運算式時,函數的調用語句,必須放在函式宣告語句之後!!!(與普通函數的區別)
3、自執行函數
①!function(){}();可以使用多種運算子開頭。但一般用!
!function(形參列表){}(實參列表);
②(function(){}())使用小括弧將函數及函數後的括弧包裹起來
③(function(){}) ()使用小括弧將函數包裹起來
三種寫法的特點
①第一種結構清晰,不容易混亂,推薦使用。
②第二種寫法能夠表明匿名函數與調用的()為一個整體,官方推薦使用。
③無法表明函數與之後的()的整體星,不推薦使用。
[函數的內部屬性]
1、arguments對象
①英語儲存調用函數時的所有實參,當我們調用函數並用實參賦值時,實際上參數列表已經儲存到arguments數組中,可以在函數中,使用arguments數組中,可以在函數中,使用arguments[n]的形式調用,n從0開始;
argument數組的個數,取決於實參列表,與形參無關
但是,一旦第n個位置的形參、實參、arguments都存在時,形參將與arguments綁定,同步變化(即在函數中修改形參的值)arguments也會改變,反之,也成立
arguments.callee()是arguments的重要指標,表示arguments所在函數的引用地址,
在函數裡面,可以使用arguments.callee();調用函數本身
在函數內部,調用函數本身的寫法,叫做遞迴
遞迴分為兩部分,遞與歸,以遞迴調用語句為界限,可以將函數分為上下兩部分
遞是當函數執行上半部分是,遇到自身的調用語句時,繼續進入內層函數,在執行上半部分,知道執行完最內層函數。
歸,當最內層函數執行以後,在從最內層函數開始,逐漸執行函數的下半部分,
當最外層函數執行時,遇到自身的調用語句,會進入內層函數執行,二外層函數的後半部分暫不執行,知道最內層函數執行完以後,在逐步向外執行。
js函數基礎知識