欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

JavaScript 中定義函數(shù)用 var foo = function () {} 和 function foo()區(qū)別介紹

 更新時間:2018年03月01日 10:02:02   作者:歸去來兮-不如去兮  
這篇文章主要介紹了JavaScript 中定義函數(shù)用 var foo = function () {} 和 function foo()區(qū)別介紹,需要的朋友可以參考下

某天寫代碼突然縣道這個問題,順勢總結一波

JavaScript 函數(shù)和變量聲明的“提前”(hoist)行為

簡單的說 如果我們使用 匿名函數(shù)

var a = {}

這種方式, 編譯后變量聲明a 會“被提前”了,但是他的賦值(也就是a)并不會被提前。

也就是,匿名函數(shù)只有在被調(diào)用時才被初始化。

如果使用

function a () {};

這種方式, 編譯后函數(shù)聲明和他的賦值都會被提前。

也就是說函數(shù)聲明過程在整個程序執(zhí)行之前的預處理就完成了,所以只要處于同一個作用域,就可以訪問到,即使在定義之前調(diào)用它也可以。

看一個例子

function hereOrThere() { //function statement
  return 'here';
}
console.log(hereOrThere()); // alerts 'there'
function hereOrThere() {
  return 'there';
}

我們會發(fā)現(xiàn)alert(hereOrThere) 語句執(zhí)行時會alert('there')!這里的行為其實非常出乎意料,主要原因是JavaScript 函數(shù)聲明的“提前”行為,簡而言之,就是Javascript允許我們在變量和函數(shù)被聲明之前使用它們,而第二個定義覆蓋了第一種定義。換句話說,上述代碼編譯之后相當于

function hereOrThere() { //function statement
 return 'here';
}
function hereOrThere() {//申明前置了,但因為這里的申明和賦值在一起,所以一起前置
 return 'there';
}
console.log(hereOrThere()); // alerts 'there'

我們期待的行為

var hereOrThere = function () { // function expression
  return 'here';
};
console.log(hereOrThere()); // alerts 'here'
hereOrThere = function () {
  return 'there';
};

這段程序編譯之后相當于:

var hereOrThere;//申明前置了
hereOrThere = function() { // function expression
 return 'here';
};
console.log(hereOrThere()); // alerts 'here'
hereOrThere = function() {
 return 'there';
};

總結

以上所述是小編給大家介紹的JavaScript 中定義函數(shù)用 var foo = function () {} 和 function foo()區(qū)別介紹,希望對大家有所幫助,如果大家有任何疑問請給我留言,小編會及時回復大家的。在此也非常感謝大家對腳本之家網(wǎng)站的支持!

相關文章

  • 簡單實現(xiàn)js進度條加載效果

    簡單實現(xiàn)js進度條加載效果

    這篇文章主要為大家詳細介紹了如何簡單實現(xiàn)js進度條加載效果,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2017-08-08
  • JavaScript實現(xiàn)把數(shù)字轉換成中文

    JavaScript實現(xiàn)把數(shù)字轉換成中文

    這篇文章主要介紹了JavaScript實現(xiàn)把數(shù)字轉換成中文,本文直接給出實例代碼,需要的朋友可以參考下
    2015-06-06
  • JS+CSS實現(xiàn)炫酷算盤時鐘效果

    JS+CSS實現(xiàn)炫酷算盤時鐘效果

    這篇文章主要為大家詳細介紹了如何使用JavaScript和CSS實現(xiàn)炫酷算盤時鐘效果,文中的示例代碼講解詳細,感興趣的小伙伴可以跟隨小編一起學習一下
    2023-12-12
  • JavaScript如何向頁面中添加一個按鈕

    JavaScript如何向頁面中添加一個按鈕

    這篇文章主要介紹了JavaScript如何向頁面中添加一個按鈕,使用兩種方式向頁面中添加一個按鈕,分別是appendChild()和innerHTML屬性,本文結合示例代碼介紹的非常詳細,需要的朋友可以參考下
    2023-10-10
  • js module大戰(zhàn)

    js module大戰(zhàn)

    這篇文章主要介紹了js module,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2019-04-04
  • ToolTip 通過Js實現(xiàn)代替超鏈接中的title效果

    ToolTip 通過Js實現(xiàn)代替超鏈接中的title效果

    ToolTip 通過Js實現(xiàn)代替超鏈接中的title效果,需要的朋友可以參考下。
    2011-04-04
  • webpack+vue2構建vue項目骨架的方法

    webpack+vue2構建vue項目骨架的方法

    本篇文章主要介紹了webpack+vue2構建vue項目骨架的方法,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2018-01-01
  • javascript編寫貪吃蛇游戲

    javascript編寫貪吃蛇游戲

    這篇文章主要介紹了javascript編寫貪吃蛇游戲的代碼,非常簡單,也很好玩,有需要的童鞋們可以參考下。
    2015-07-07
  • 原生JS實現(xiàn)的雪花飄落動畫效果

    原生JS實現(xiàn)的雪花飄落動畫效果

    這篇文章主要介紹了原生JS實現(xiàn)的雪花飄落動畫效果,涉及javascript數(shù)值運算及頁面元素屬性動態(tài)操作相關實現(xiàn)技巧,需要的朋友可以參考下
    2018-05-05
  • 微信禁止下拉查看URL的處理方法

    微信禁止下拉查看URL的處理方法

    這篇文章主要介紹了微信禁止下拉查看URL的處理方法,需要的朋友可以參考下
    2017-09-09

最新評論