国产xxxx99真实实拍_久久不雅视频_高清韩国a级特黄毛片_嗯老师别我我受不了了小说

資訊專欄INFORMATION COLUMN

關于js的預解釋

yankeys / 2204人閱讀

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

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

    var test

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

定義:比如

    test=2

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

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

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

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

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

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

那么打印出來的內容是什么喃?

    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的時候,已經把2賦值給了test,所以第二個console是有值的。而foo是function,在預解釋的時候,既要聲明又要定義,所以foo(5)是有值的。

文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。

轉載請注明本文地址:http://specialneedsforspecialkids.com/yun/108458.html

相關文章

  • JavaScript的預編譯過程分析

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

    graf 評論0 收藏0
  • 圖片的預加載和懶加載

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

    SwordFly 評論0 收藏0
  • JavaScript-預編譯

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

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

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

    jayce 評論0 收藏0
  • JS解釋

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

    daydream 評論0 收藏0

發表評論

0條評論

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