首頁 >web前端 >js教程 >js的預解釋是什麼意思?淺析js中預先解釋的涵義

js的預解釋是什麼意思?淺析js中預先解釋的涵義

不言
不言原創
2018-08-22 17:59:501655瀏覽

這篇文章帶給大家的內容是關於js的預解釋是什麼意思?淺析js中預先解釋的意義,有一定的參考價值,有需要的朋友可以參考一下,希望對你有幫助。

之前常會聽到預解釋,預解釋,那麼預解釋到底是什麼?今天就來淺談一下下。
預解釋也是我們平常說的變數提聲,在目前作用域中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)是有值的。

相關推薦:

扒一扒JavaScript 預解釋_javascript技巧

JScript中的條件註解詳解_javascript技巧


以上是js的預解釋是什麼意思?淺析js中預先解釋的涵義的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn

相關文章

看更多