成人国产在线小视频_日韩寡妇人妻调教在线播放_色成人www永久在线观看_2018国产精品久久_亚洲欧美高清在线30p_亚洲少妇综合一区_黄色在线播放国产_亚洲另类技巧小说校园_国产主播xx日韩_a级毛片在线免费

資訊專欄INFORMATION COLUMN

關(guān)于js的預(yù)解釋

yankeys / 2209人閱讀

摘要:之前經(jīng)常會聽到預(yù)解釋,預(yù)解釋,那么預(yù)解釋到底是什么今天就來淺談一下下。所以預(yù)解釋是只發(fā)生在當前作用域下的,只有函數(shù)執(zhí)行的時候函數(shù)中的才會預(yù)解釋。而是在預(yù)解釋的時候,既要聲明又要定義,所以是有值的。

之前經(jīng)常會聽到預(yù)解釋,預(yù)解釋,那么預(yù)解釋到底是什么?今天就來淺談一下下。
預(yù)解釋也是我們平時說的變量提聲,在當前作用域中js代碼執(zhí)行之前,瀏覽器首先會默認的把所有的帶var和function的進行提前的聲明或者定義,這個就可以叫做預(yù)解釋。
那什么叫做聲明,什么又叫做定義喃?
聲明:比如

    var test

那這個就是在告訴瀏覽器我們在全局作用域中聲明了一個叫test的變量

定義:比如

    test=2

給我們聲明的變量進行賦值

那對于帶var 和function關(guān)鍵字的,在預(yù)解釋中,他們也是不一樣的。帶var 的在預(yù)解釋中只是提前的聲明,而function在預(yù)解釋中既要聲明,還要定義,這也就是為什么上面我們說 “ 提前聲明定義 ”
舉個例子

    var test = 2
    var obj = {"name":"代碼"}
    function foo (val) {
        var test2 = val
        console.log(test2)
    }

以上代碼在全局作用域中從上往下執(zhí)行的時候預(yù)解釋,首先聲明一個 test,聲明一個obj,再聲明和定義一個foo。那么在foo里面的 var test2在全局作用域下會預(yù)解釋嗎?當然是不行的, 上面我們也說過了“ 在當前作用域中js執(zhí)行 ”test2在foo的作用域中,只有當foo執(zhí)行的時候才會預(yù)解釋。所以預(yù)解釋是只發(fā)生在當前作用域下的,只有函數(shù)執(zhí)行的時候函數(shù)中的才會預(yù)解釋。

所以我們可能出去面試的時候就會遇到一些這樣的問題

    console.log(test )
    foo(5)
    var test = 2
    console.log(test )
    var obj = {"name":"代碼"}
    function foo (val) {
        var test2 = val
        console.log(test2)
    }

那么打印出來的內(nèi)容是什么喃?

    console.log(test )//undefined
    foo(5)//5
    var test = 2
    console.log(test )//2
    var obj = {"name":"代碼"}
    function foo (val) {
        var test2 = val
        console.log(test2)
    }
    

因為剛開始的時候只是對test做了聲明,但是沒有對它進行定義,所以第一次console是undefind,但是后來到了第二次console的時候,已經(jīng)把2賦值給了test,所以第二個console是有值的。而foo是function,在預(yù)解釋的時候,既要聲明又要定義,所以foo(5)是有值的。

文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請注明本文地址:http://systransis.cn/yun/108458.html

相關(guān)文章

  • JavaScript的預(yù)編譯過程分析

    摘要:一概念是一個單線程解釋型的編程語言。預(yù)編譯大致可分為步創(chuàng)建對象找形參和變量聲明,將形參和變量名作為屬性名,值為將實參值和形參統(tǒng)一在函數(shù)體里面找函數(shù)聲明,值賦予函數(shù)體。 一、JavaScript概念 JavaScript ( JS ) 是一個單線程、解釋型的編程語言。 二、JavaScript語言特點 2.1 單線程 JavaScript語言的一大特點就是單線程,也就是說,同一個時間只能...

    graf 評論0 收藏0
  • 圖片的預(yù)加載和懶加載

    摘要:圖片的預(yù)加載是提升用戶體驗而損失性能的一種做法,而懶加載的性能就比較好了,所以將兩個結(jié)合起來放到程序中是一種不錯的選擇。 最近在做H5滑頁時,遇到一些比較大的場景,動輒二十、三十頁,而圖片更是可恨的能達到上百個,所以就會導(dǎo)致場景在加載的時候遇到網(wǎng)速比較慢的時候,用戶等待的時間特別長,這樣的話,就有可能導(dǎo)致一部分的用戶沒有耐心,而丟失這部分用戶,于是就有了這里的圖片的預(yù)加載和懶加載,記個...

    SwordFly 評論0 收藏0
  • JavaScript-預(yù)編譯

    摘要:預(yù)編譯發(fā)生在函數(shù)執(zhí)行前也就是說函數(shù)執(zhí)行時,預(yù)編譯已經(jīng)結(jié)束。五總結(jié)理解預(yù)編譯需要明白變量函數(shù)聲明和變量賦值。預(yù)編譯階段,只進行變量函數(shù)聲明,不會進行變量的初始化即變量賦值,所有變量的值都是變量賦值是在解釋執(zhí)行階段才進行的。 一、JS的概念 JavaScript ( JS ) 是一種具有函數(shù)優(yōu)先的輕量級解釋型或即時編譯型的編程語言。 二、JS語言特點 2.1 單線程 (1)JavaScri...

    Aldous 評論0 收藏0
  • jQuery的on綁定click和直接綁定click區(qū)別

    摘要:我綁定的事件無效。狀況總結(jié)動態(tài)元素綁定用,靜態(tài)元素綁定兩者都可以,為了代碼的統(tǒng)一還是都用吧,切記,可以篩選元素哦 狀況之外 在之前的公司并沒有遇到這個問題,也就沒有深究。直到自己換了現(xiàn)在的公司,剛來第二天就開始寫別人寫到一半的項目,很無奈,不是原生就是jquery,由于項目急,已經(jīng)來不及切換框架重新布局,只能繼續(xù)了。 狀況之中 到處都是列表,到處都是js創(chuàng)建的動態(tài)頁面,好吧,那我也繼續(xù)...

    jayce 評論0 收藏0
  • JS預(yù)解釋

    摘要:預(yù)解釋基礎(chǔ)知識先介紹的基本數(shù)據(jù)類型基本數(shù)據(jù)類型值操作有引用數(shù)據(jù)類型引用地址執(zhí)行環(huán)境當瀏覽器加載頁面的時候,首先會提供一個供全局代碼執(zhí)行的環(huán)境全局作用域如下代碼是在中好好學(xué)習天天向上把整個函數(shù)定義的部分函數(shù)本身在控制臺輸出 預(yù)解釋 1. JS基礎(chǔ)知識 1.1 先介紹js的基本數(shù)據(jù)類型 基本數(shù)據(jù)類型 --- 值操作 有number、string、boolean、null、undefine...

    daydream 評論0 收藏0

發(fā)表評論

0條評論

最新活動
閱讀需要支付1元查看
<