摘要:在當中,只存在函數作用域和全局作用域,而塊級作用域是不存在的。作用域中作用域分為兩種,分別是全局作用域函數作用域其中全局作用域指的是在一個文件中的作用域。
JavaScript中和C語言、Java這些語言不一樣。在JavaScript當中,只存在函數作用域和全局作用域,而塊級作用域是不存在的。剛剛接觸JavaScript的話往往不知道這一點,所以很容易因為這一點在程序中出錯。作用域
JavaScript中作用域分為兩種,分別是:
全局作用域
函數作用域
其中全局作用域指的是在一個.js文件中的作用域。全局作用域往往包含了這些特點:
變量公有化
函數公有化
簡而言之就是說全局作用域中的變量和函數在這個.js都是公有的、可訪問的。而函數作用域則比起它則范圍相對狹小一些,特點為:
變量私有化
函數私有化
函數作用域當中的變量和函數都是私有的,任何對變量和函數的修改都只能在這個函數作用域內進行
提升 變量提升由于我們上面所說的,JavaScript中沒有塊級作用域的存在,所以我們的每一個變量都是全局有效,或者是函數內有效。什么意思?我們先來看一下這段代碼:
function gg(){ if(tag !== "undefined"){ var tag = "output!" console.log(tag) } } //輸出: output!
上面這段代碼看似不可能輸出output!,但是其實這里發生了變量提升。由于塊級作用域不存在,所以代碼var tag = "output!"在運行時發生了如下的情況:
function gg(){ var tag if(tag !== "undefined"){ tag = "output!" console.log(tag) } } //輸出: output!
即變量tag的定義會被提升到作用域頂部,所以tag的初值為undefined
函數提升和變量一樣,函數也存在著提升的情況,有兩種聲明函數的方式:
函數聲明:
function gg(){ console.log("success") }
函數表達式:
var gg = function(){ console.log("success") }
其中只有函數聲明能夠被提升到作用域頂部,而函數表達式這種形式聲明的函數則不能被提升
console.log(f1) //輸出 function f1(){} console.log(f2) //輸出 undefined function f1(){} var f2 = function(){}總結
JavaScript中只有兩種作用域:全局作用域和函數作用域。而因為這個原因,在代碼中的的函數聲明、變量聲明都會被提升到作用域頂部
掃描下方的二維碼或搜索「tony老師的前端補習班」關注我的微信公眾號,那么就可以第一時間收到我的最新文章。
文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。
轉載請注明本文地址:http://m.specialneedsforspecialkids.com/yun/85015.html
摘要:是詞法作用域工作模式。使用可以將變量綁定在所在的任意作用域中通常是內部,也就是說為其聲明的變量隱式的劫持了所在的塊級作用域。 作用域與閉包 如何用js創建10個button標簽,點擊每個按鈕時打印按鈕對應的序號? 看到上述問題,如果你能看出來這個問題實質上是考對作用域的理解,那么恭喜你,這篇文章你可以不用看了,說明你對作用域已經理解的很透徹了,但是如果你看不出來這是一道考作用域的題目,...
摘要:是詞法作用域工作模式。使用可以將變量綁定在所在的任意作用域中通常是內部,也就是說為其聲明的變量隱式的劫持了所在的塊級作用域。 作用域與閉包 如何用js創建10個button標簽,點擊每個按鈕時打印按鈕對應的序號? 看到上述問題,如果你能看出來這個問題實質上是考對作用域的理解,那么恭喜你,這篇文章你可以不用看了,說明你對作用域已經理解的很透徹了,但是如果你看不出來這是一道考作用域的題目,...
摘要:是詞法作用域工作模式。使用可以將變量綁定在所在的任意作用域中通常是內部,也就是說為其聲明的變量隱式的劫持了所在的塊級作用域。 作用域與閉包 如何用js創建10個button標簽,點擊每個按鈕時打印按鈕對應的序號? 看到上述問題,如果你能看出來這個問題實質上是考對作用域的理解,那么恭喜你,這篇文章你可以不用看了,說明你對作用域已經理解的很透徹了,但是如果你看不出來這是一道考作用域的題目,...
摘要:是詞法作用域工作模式。使用可以將變量綁定在所在的任意作用域中通常是內部,也就是說為其聲明的變量隱式的劫持了所在的塊級作用域。 作用域與閉包 如何用js創建10個button標簽,點擊每個按鈕時打印按鈕對應的序號? 看到上述問題,如果你能看出來這個問題實質上是考對作用域的理解,那么恭喜你,這篇文章你可以不用看了,說明你對作用域已經理解的很透徹了,但是如果你看不出來這是一道考作用域的題目,...
閱讀 1346·2023-04-25 15:21
閱讀 2680·2021-11-24 10:23
閱讀 3404·2021-10-11 10:59
閱讀 3252·2021-09-03 10:28
閱讀 1735·2019-08-26 13:45
閱讀 2328·2019-08-26 12:11
閱讀 928·2019-08-26 12:00
閱讀 1713·2019-08-26 10:44