1. 程式人生 > 其它 >【前端常用小知識】JS中的函式宣告和函式表示式

【前端常用小知識】JS中的函式宣告和函式表示式

會寫這篇隨筆是因為最近碰到一個類似(function(){})() 這樣的一個格式的JS函式,在宣告函式之後直接加一對小括號,是啥意思,有點摸不著頭腦,後來經過查閱資料知道這涉及函式宣告和函式表示式的概念。

先來看看什麼樣的是函式宣告:

<script>
function() {
    alert("hello, world.");
};

function foo() {
    alert("hello, world.");
};
</script>

再看看什麼樣的是函式表示式:

<script>
var foo = function() {
    alert(
"hello, world."); }; </script>

JavaScript不允許在函式聲明後面直接使用小括號,而函式表示式則沒有這個限制,但是我們為什麼不使用以下的函式表示式的方式呢?

<script>
var foo = function() {
    alert("hello, world.");
}();
</script>

雖然從語法解析的角度看沒有問題,但是上面的程式碼存在弊端,它引入了一個變數,可能會汙染現有的執行環境,帶來潛在的問題。於是,改成下面的這種形式,這就點題了

<script>
(function() {
    alert(
"hello, world."); })(); </script>

對應了格式(function(){})(),這段程式碼的意思是宣告一個函式,然後立刻執行,它沒有名字(匿名函式)就無法像普通函式那樣隨時隨地呼叫了,所以在他定義完成後就馬上呼叫他,後面的括號()是執行這個函式的意思。