一、函數的定義:
在說明什么是函數前先舉一個小例子:
大家都知道印刷術是我國的四大發明(科普一下:中國四大發明:造紙術、印刷術、火藥、指南針)之一,之所以有印刷術,是因為重復的抄寫既浪費時間,效率又很低,所以印刷術應用而生,印刷術就像一個工具,有了這個工具,我們就不需要再重復的去抄寫一些一模一樣的內容。
今天所說的函數就類似于印刷術,我們在書寫代碼時發現,在實現同一個功能時,所用的代碼幾乎是一樣的,因為實際需要,所以不得不重復的去書寫一樣的代碼,這時我們書寫的代碼看起來很冗雜,會占據內存空間,解析的時間也會很長,所以,為了使我們的代碼書寫的更美觀,我們可以將我們的代碼封裝起來,給它一個命名,放在一個獨立的模塊里,需要使用時拿過來就OK了!
比如說我們在不使用任何循環語句直接想打印5次“hello world!”時,這時我們就需要重復輸出5次“hello world!”,代碼如下:
document.write(('hello world!')+"</br>"); document.write(('hello world!')+"</br>"); document.write(('hello world!')+"</br>"); document.write(('hello world!')+"</br>"); document.write(('hello world!')+"</br>");
function helloworld(){ document.write(('hello world!')+"</br>"); } helloworld() helloworld() helloworld() helloworld() helloworld()
函數的定義:需要反復使用的功能代碼,封裝成一個獨立的模塊,這個模塊就叫函數。
二、聲明函數的方法:
用function來定義函數
我們了解了什么是函數后,接著來看一下怎么聲明函數,通俗點說就是怎么使用這個函數:
1.語句定義法:
其實我們在打印“hello world”時使用的方法就是語句定義法
格式:function 函數名(){
? ? ?函數塊;
}
調用:函數名()
2.表達式定義法:
一說表達式,肯定是和賦值有關,我們可以大膽的猜想一下,表達式定義法是不是就是我們將一個函數賦值給了一個變量呢?
看一下它的格式:
var 變量名 = function[函數名](){
? ? 函數塊;
}
調用:變量名()
注意:var后面的是它聲明的這個變量的變量名,不是函數名,函數名還是在function后面,之所以將函數名寫在[]中,是因為在表達式定義法中,函數名是可以省略的,通常情況下,函數名我們也都是省略不寫的。
語句定義法和表達式定義法在以后的使用中,語句定義法會更常用。
為什么說語句定義法更常用呢,這就要說一下語句定義法和表達式定義法的區別了:
3、語句定義法和表達式定義法的區別:
語句定義法會提升函數,會在執行代碼前讀取函數聲明,通俗講就是我們可以在任何位置調用這個函數;
//person() 函數前調用 //張三 function person(){ var name = "張三"; alert(name); } person() //函數后調用 //張三
表達式定義法不會提升函數,必須先聲明函數,再調用;
//person(); 報錯:控制臺輸出person is not a function var person = function(){ var name = "張三"; alert(name); } person(); //張三