最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

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

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

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

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

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

var a = {}

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

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

如果使用

function a () {};

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

也就是說函數(shù)聲明過程在整個程序執(zhí)行之前的預(yù)處理就完成了,所以只要處于同一個作用域,就可以訪問到,即使在定義之前調(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';
};

總結(jié)

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

相關(guān)文章

  • javascript網(wǎng)頁隨機點名實現(xiàn)過程解析

    javascript網(wǎng)頁隨機點名實現(xiàn)過程解析

    這篇文章主要介紹了javascript實現(xiàn)網(wǎng)頁隨機變色及實例,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友可以參考下
    2019-10-10
  • TS中最常見的聲明合并(接口合并)

    TS中最常見的聲明合并(接口合并)

    這篇文章主要介紹了TS中最常見的聲明合并:接口合并,TS中的聲明合并,指的就是編譯器會針對同名的聲明合并為一個聲明,合并后的聲明會同時擁有原先兩個或多個聲明的特性,接口的合并也是一樣,它會將雙方的成員放到一個同名的接口里,更多詳細內(nèi)容請參考下面文章內(nèi)容

    2021-12-12
  • bootstrap學習筆記之初識bootstrap

    bootstrap學習筆記之初識bootstrap

    Bootstrap是一款目前非常流行的前端框架,簡單的說,就是html,css,javascript的工具集。本文給大家介紹bootstrap學習筆記之初識bootstrap,感興趣的朋友一起學習吧
    2016-06-06
  • JS實現(xiàn)獲取自定義屬性data值的方法示例

    JS實現(xiàn)獲取自定義屬性data值的方法示例

    這篇文章主要介紹了JS實現(xiàn)獲取自定義屬性data值的方法,結(jié)合實例形式較為詳細的分析了javascript針對自定義屬性data的相關(guān)操作技巧,需要的朋友可以參考下
    2018-12-12
  • js仿QQ中對聯(lián)系人向左滑動、滑出刪除按鈕的操作

    js仿QQ中對聯(lián)系人向左滑動、滑出刪除按鈕的操作

    這篇文章主要介紹了js仿QQ中對聯(lián)系人向左滑動、滑出刪除按鈕的操作,即編寫一個js向左滑動刪除 交互特效的插件,感興趣的小伙伴們可以參考一下
    2016-04-04
  • 巧方法 JavaScript獲取超鏈接的絕對URL地址

    巧方法 JavaScript獲取超鏈接的絕對URL地址

    這篇文章主要為大家詳細介紹了一個非常巧妙的方法,JavaScript如何獲取超鏈接的絕對URL地址,感興趣的小伙伴們可以參考一下
    2016-06-06
  • javascript中搜索數(shù)組的四種方法示例詳解

    javascript中搜索數(shù)組的四種方法示例詳解

    我們在學到j(luò)s中數(shù)組的時候,我們會接觸到j(luò)s中數(shù)組的一些方法這些方法對我們來說,可以很便利的達到我們想要的結(jié)果,下面這篇文章主要給大家介紹了關(guān)于javascript中搜索數(shù)組的四種方法,需要的朋友可以參考下
    2022-12-12
  • js獲取元素到文檔區(qū)域document的(橫向、縱向)坐標的兩種方法

    js獲取元素到文檔區(qū)域document的(橫向、縱向)坐標的兩種方法

    獲取頁面中元素到文檔區(qū)域document的橫向、縱向坐標,在js控制元素運動的過程中,對于頁面元素坐標位置的獲取是經(jīng)常用到的,這里主要總結(jié)下兩種方法
    2013-05-05
  • JavaScript中判斷變量是否存在的四種常用方法整理

    JavaScript中判斷變量是否存在的四種常用方法整理

    在Javascript中我們通常判斷一個變量是否存在,即不為null或者undefined,這篇文章主要給大家介紹了關(guān)于JavaScript中判斷變量是否存在的四種常用方法,文中通過代碼介紹的非常詳細,需要的朋友可以參考下
    2024-08-08
  • 淺談javascript中for in 和 for each in的區(qū)別

    淺談javascript中for in 和 for each in的區(qū)別

    兩個的作用都用來遍歷對象,但為什么有了for in語句了還要for each in語句呢,后來看了下for each in開發(fā)的文檔,for each in是作為E4X標準的一部分在javascript 1.6中發(fā)布的,而且它不是ECMAScript標準的一部分
    2015-04-04

最新評論

延津县| 阿瓦提县| 林芝县| 伽师县| 南昌市| 新丰县| 班戈县| 灵寿县| 麻阳| 红原县| 子洲县| 新巴尔虎左旗| 巴彦县| 屯留县| 阿瓦提县| 彰化县| 新竹县| 邯郸市| 洱源县| 师宗县| 佛教| 泊头市| 湄潭县| 榆树市| 吴忠市| 西充县| 双城市| 大英县| 元江| 新密市| 张家港市| 临颍县| 白银市| 齐河县| 农安县| 永福县| 错那县| 铁力市| 璧山县| 西吉县| 车险|