什麼是函數?編程
函數是事件驅動或者被調用時執行的重複代碼塊。函數
做用域:spa
1. 全局做用域code
2. 函數做用域(局部做用域)blog
var i = 100; //全局做用域
function fun(){
var j = 10; //局部做用域
console.log(i + j);
}
fun();
全局做用域與函數做用域是相對的,好比:事件
i是全局做用域,j和k是函數做用域,而j是k的全局做用域。作用域
var i = 100; //全局做用域
function fun(){
var j = 10; //局部做用域
function fun2(){
var k = 20;
}
}
fun();
使用var關鍵字聲明的變量不是全局就是局部,不是var聲明的變量都是全局變量。io
function fun(){
j = 10; //局部做用域
function fun2(){
var k = 20;
}
}
fun();
console.log(j);
console.log(k)
返回值 j = 10;console
k is not defined!function
函數的表達式:
var fun1 = function fun(){
console.log("hello");
}
函數表達式:將函數賦給fun1以後函數名fun將被放棄,這意味着後面對函數的調用,只有fun1有效,而fun是無效的,他只有在返回函數名的以後,纔有fun名稱。
fun1.name ---->fun
fun.name ---->fun is not defined !
fun1.length ----->5
fun.length ----->fun is not defined !
函數的聲明:
function fun2(){
console.log("world");
}
區別:
函數表達式能夠直接被執行符號執行,而函數聲明不能,只有函數聲明轉換爲函數表達式是才能夠被執行符號執行。
函數聲明變爲函數表達式,只須要在前面添加"+","-","!"這三種中的其中一個就行。
+function fun(){ //函數聲明 ,在函數的前面能夠加上+ - !能夠讓函數聲明變成函數表達式
console.log("hello");
}()
var fun2 = function(){ //函數表達式
console.log("world");
}()
當即執行函數:
好處:避免寫全局變量,全部的內容所有都卸載當即執行函數中。
當即執行函數必須是函數表達式。
當即執行函數的兩種表現形式:
1. (function(){})()
2. (function(){}())
二者在功能上沒有什麼區別,主要看編程人員的習慣。