簡介:不少概念不清或忘記,從新構建本身的知識體系。天天問本身1~多個問題。我是菜鳥 成爲大神之路!
html
這兩個方法的根本區別:JavaScript 函數和變量聲明的「提早」(hoist)行爲函數
若是咱們使用 匿名函數var foo = function () {}
這種方式, 編譯後變量聲明foo
會「被提早」了,可是他的賦值(也就是function函數體
)並不會被提早。 也就是,匿名函數只有在被調用時才被初始化
。ui
若是咱們使用 function foo(){}
這種方式, 編譯後函數聲明和他的賦值都會被提早。 也就是說函數聲明過程在整個程序執行以前的預處理就完成了
,因此只要處於同一個做用域,就能夠訪問到,即便在定義以前調用它也能夠
。spa
foo();
function foo(){
console.log('一次執行');
}
複製代碼
var number = 0;
function foo(){
console.log('一次執行',number);
}
foo();
function foo(){
console.log('二次執行',number);
}
foo();
複製代碼
參考文章中有涉及:第 13 天內容code
var foo = function(){}
var foo = function(){}();
function(){}
function(){}()
(function(){})();
(function(){}());
function foo(){}
function foo(){}();
function foo(){}(a);
(function foo(){});
(function foo(){})();
!function(){}();
new function(){}();
複製代碼
參考文章:
① www.cnblogs.com/TomXu/archi…
② www.cnblogs.com/shuishuowob…cdn