填坑-十萬個爲何?(12)

簡介:不少概念不清或忘記,從新構建本身的知識體系。天天問本身1~多個問題。我是菜鳥 成爲大神之路!html

1. JavaScript 中,定義函數時用 var foo = function () {} 和 function foo(){} 有什麼區別?

這兩個方法的根本區別: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

相關文章
相關標籤/搜索