溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務(wù)條款》

JavaScript中函數(shù)進(jìn)階是怎樣現(xiàn)進(jìn)行的

發(fā)布時間:2021-09-30 16:10:59 來源:億速云 閱讀:126 作者:柒染 欄目:web開發(fā)

JavaScript中函數(shù)進(jìn)階是怎樣現(xiàn)進(jìn)行的,相信很多沒有經(jīng)驗的人對此束手無策,為此本文總結(jié)了問題出現(xiàn)的原因和解決方法,通過這篇文章希望你能解決這個問題。

全局作用域

· 全局作用域是最大的作用域

· 在全局作用域中定義的變量可以在任何地方使用

· 頁面打開的時候,瀏覽器會自動給我們生成一個全局作用域 window

· 這個作用域會一直存在,直到頁面關(guān)閉就銷毀了

// 下面兩個變量都是存在在全局作用域下面的,都是可以在任意地方使用的var num = 100var num2 = 200

局部作用域

· 局部作用域就是在全局作用域下面有開辟出來的一個相對小一些的作用域

· 在局部作用域中定義的變量只能在這個局部作用域內(nèi)部使用

· 在 JS 中只有函數(shù)能生成一個局部作用域,別的都不行

· 每一個函數(shù),都是一個局部作用域

// 這個 num 是一個全局作用域下的變量 在任何地方都可以使用var num = 100

function fn() {

  // 下面這個變量就是一個 fn 局部作用域內(nèi)部的變量  // 只能在 fn 函數(shù)內(nèi)部使用  var num2 = 200}

fn()

變量使用規(guī)則(重點)

· 有了作用域以后,變量就有了使用范圍,也就有了使用規(guī)則

· 變量使用規(guī)則分為兩種,訪問規(guī)則 和 賦值規(guī)則

訪問規(guī)則

· 當(dāng)我想獲取一個變量的值的時候,我們管這個行為叫做 訪問

· 獲取變量的規(guī)則:

· 首先,在自己的作用域內(nèi)部查找,如果有,就直接拿來使用

· 如果沒有,就去上一級作用域查找,如果有,就拿來使用

· 如果沒有,就繼續(xù)去上一級作用域查找,依次類推

· 如果一直到全局作用域都沒有這個變量,那么就會直接報錯(該變量 is not defined)

var num = 100

function fn() {

  var num2 = 200

  function fun() {

    var num3 = 300

    console.log(num3) // 自己作用域內(nèi)有,拿過來用    console.log(num2) // 自己作用域內(nèi)沒有,就去上一級,就是 fn 的作用域里面找,發(fā)現(xiàn)有,拿過來用    console.log(num) // 自己這沒有,去上一級 fn 那里也沒有,再上一級到全局作用域,發(fā)現(xiàn)有,直接用    console.log(a) // 自己沒有,一級一級找上去到全局都沒有,就會報錯  }

  fun()}

fn()

· 變量的訪問規(guī)則 也叫做 作用域的查找機制

· 作用域的查找機制只能是向上找,不能向下找

function fn() {

  var num = 100}fn()

console.log(num) // 發(fā)現(xiàn)自己作用域沒有,自己就是全局作用域,沒有再上一級了,直接報錯

賦值規(guī)則

· 當(dāng)你想給一個變量賦值的時候,那么就先要找到這個變量,在給他賦值

· 變量賦值規(guī)則:

· 先在自己作用域內(nèi)部查找,有就直接賦值

· 沒有就去上一級作用域內(nèi)部查找,有就直接賦值

· 在沒有再去上一級作用域查找,有就直接賦值

· 如果一直找到全局作用域都沒有,那么就把這個變量定義為全局變量,在給他賦值

function fn() {

  num = 100}fn()

// fn 調(diào)用以后,要給 num 賦值// 查看自己的作用域內(nèi)部沒有 num 變量// 就會向上一級查找// 上一級就是全局作用域,發(fā)現(xiàn)依舊沒有// 那么就會把 num 定義為全局的變量,并為其賦值// 所以 fn() 以后,全局就有了一個變量叫做 num 并且值是 100console.log(num) // 100

看完上述內(nèi)容,你們掌握J(rèn)avaScript中函數(shù)進(jìn)階是怎樣現(xiàn)進(jìn)行的的方法了嗎?如果還想學(xué)到更多技能或想了解更多相關(guān)內(nèi)容,歡迎關(guān)注億速云行業(yè)資訊頻道,感謝各位的閱讀!

向AI問一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進(jìn)行舉報,并提供相關(guān)證據(jù),一經(jīng)查實,將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI