好程式設計師web前端培訓分享JavaScript學習筆記函式進階
好程式設計師web 前端培訓分享 JavaScript 學習筆記函式進階, 函式(下)
作用域(重點)
什麼是作用域,就是一個變數可以生效的範圍
變數不是在所有地方都可以使用的,而這個變數的使用範圍就是作用域
全域性作用域
· 全域性作用域是最大的作用域
· 在全域性作用域中定義的變數可以在任何地方使用
· 頁面開啟的時候,瀏覽器會自動給我們生成一個全域性作用域 window
· 這個作用域會一直存在,直到頁面關閉就銷燬了
// 下面兩個變數都是存在在全域性作用域下面的,都是可以在任意地方使用的 var num = 100 var num2 = 200
區域性作用域
· 區域性作用域就是在全域性作用域下面有開闢出來的一個相對小一些的作用域
· 在區域性作用域中定義的變數只能在這個區域性作用域內部使用
· 在 JS 中只有函式能生成一個區域性作用域,別的都不行
· 每一個函式,都是一個區域性作用域
// 這個 num 是一個全域性作用域下的變數 在任何地方都可以使用 var num = 100
function fn() {
// 下面這個變數就是一個 fn 區域性作用域內部的變數 // 只能在 fn 函式內部使用 var num2 = 200 }
fn()
變數使用規則(重點)
· 有了作用域以後,變數就有了使用範圍,也就有了使用規則
· 變數使用規則分為兩種, 訪問規則 和 賦值規則
訪問規則
· 當我想獲取一個變數的值的時候,我們管這個行為叫做 訪問
· 獲取變數的規則:
· 首先,在自己的作用域內部查詢,如果有,就直接拿來使用
· 如果沒有,就去上一級作用域查詢,如果有,就拿來使用
· 如果沒有,就繼續去上一級作用域查詢,依次類推
· 如果一直到全域性作用域都沒有這個變數,那麼就會直接報錯(該變數 is not defined)
var num = 100
function fn() {
var num2 = 200
function fun() {
var num3 = 300
console.log(num3) // 自己作用域內有,拿過來用 console.log(num2) // 自己作用域內沒有,就去上一級,就是 fn 的作用域裡面找,發現有,拿過來用 console.log(num) // 自己這沒有,去上一級 fn 那裡也沒有,再上一級到全域性作用域,發現有,直接用 console.log(a) // 自己沒有,一級一級找上去到全域性都沒有,就會報錯 }
fun()}
fn()
· 變數的訪問規則 也叫做 作用域的查詢機制
· 作用域的查詢機制只能是向上找,不能向下找
function fn() {
var num = 100 }fn()
console.log(num) // 發現自己作用域沒有,自己就是全域性作用域,沒有再上一級了,直接報錯
賦值規則
· 當你想給一個變數賦值的時候,那麼就先要找到這個變數,在給他賦值
· 變數賦值規則:
· 先在自己作用域內部查詢,有就直接賦值
· 沒有就去上一級作用域內部查詢,有就直接賦值
· 在沒有再去上一級作用域查詢,有就直接賦值
· 如果一直找到全域性作用域都沒有,那麼就把這個變數定義為全域性變數,在給他賦值
function fn() {
num = 100 }fn()
// fn 呼叫以後,要給 num 賦值// 檢視自己的作用域內部沒有 num 變數// 就會向上一級查詢// 上一級就是全域性作用域,發現依舊沒有// 那麼就會把 num 定義為全域性的變數,併為其賦值// 所以 fn() 以後,全域性就有了一個變數叫做 num 並且值是 100 console.log(num) // 100
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/69913864/viewspace-2701485/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- 好程式設計師web前端培訓分享JavaScript學習筆記Promise程式設計師Web前端JavaScript筆記Promise
- 好程式設計師web前端培訓分享JavaScript學習筆記SASS程式設計師Web前端JavaScript筆記
- 好程式設計師web前端培訓分享JavaScript學習筆記cookie程式設計師Web前端JavaScript筆記Cookie
- 好程式設計師web前端培訓分享詳解JavaScript學習筆記建構函式程式設計師Web前端JavaScript筆記函式
- 好程式設計師web前端培訓分享學習JavaScript程式設計師Web前端JavaScript
- 好程式設計師web前端培訓分享JavaScript學習筆記之設計模式程式設計師Web前端JavaScript筆記設計模式
- 好程式設計師web前端培訓分享node學習筆記程式設計師Web前端筆記
- 好程式設計師web前端培訓JavaScript學習筆記DOM程式設計師Web前端JavaScript筆記
- 好程式設計師web前端培訓JavaScript學習筆記--jQuery程式設計師Web前端JavaScript筆記jQuery
- 好程式設計師web前端培訓分享JavaScript學習筆記分支結構程式設計師Web前端JavaScript筆記
- 好程式設計師web前端培訓分享JavaScript學習筆記之陣列程式設計師Web前端JavaScript筆記陣列
- 好程式設計師web前端培訓分享JavaScript學習筆記之正則程式設計師Web前端JavaScript筆記
- 好程式設計師web前端培訓分享JavaScript學習指南程式設計師Web前端JavaScript
- 好程式設計師web前端培訓分享HTMLCSS學習筆記BFC程式設計師Web前端HTMLCSS筆記
- 好程式設計師web前端培訓分享React學習筆記(一)程式設計師Web前端React筆記
- 好程式設計師web前端培訓分享React學習筆記(二)程式設計師Web前端React筆記
- 好程式設計師web前端培訓分享React學習筆記(三)程式設計師Web前端React筆記
- 好程式設計師web前端培訓分享JavaScript學習筆記之ES5程式設計師Web前端JavaScript筆記
- 好程式設計師web前端培訓分享JavaScript學習筆記之迴圈結構程式設計師Web前端JavaScript筆記
- 好程式設計師web前端培訓分享JavaScript學習筆記閉包與繼承程式設計師Web前端JavaScript筆記繼承
- 好程式設計師web前端培訓分享JavaScript學習筆記ajax及ajax封裝程式設計師Web前端JavaScript筆記封裝
- 好程式設計師web前端培訓分享JavaScript學習筆陣列的排序程式設計師Web前端JavaScript陣列排序
- 好程式設計師web前端培訓學習筆記Vue學習筆記一程式設計師Web前端筆記Vue
- 好程式設計師web前端培訓學習筆記Vue學習筆記之二程式設計師Web前端筆記Vue
- 好程式設計師web前端培訓分享JavaScript框架J程式設計師Web前端JavaScript框架
- 好程式設計師web前端培訓分享node學習筆記系列之四十一程式設計師Web前端筆記
- 好程式設計師web前端培訓分享之HTMLCSS學習筆記css3-多列程式設計師Web前端HTMLCSS筆記S3
- 好程式設計師web前端培訓分享HTMLCSS學習筆記css3選擇器程式設計師Web前端HTMLCSS筆記S3
- 好程式設計師web前端培訓分享怎樣學好css?程式設計師Web前端CSS
- 好程式設計師web前端培訓分享九個JavaScript小技巧程式設計師Web前端JavaScript
- 好程式設計師web前端培訓分享JavaScript基礎語法程式設計師Web前端JavaScript
- 好程式設計師web前端培訓分享JavaScript相關知識程式設計師Web前端JavaScript
- 好程式設計師web前端培訓分享Javascript中原型屬性程式設計師Web前端JavaScript原型
- 好程式設計師web前端培訓分享之HTMLCSS學習筆記媒體查詢+ rem用法程式設計師Web前端HTMLCSS筆記REM
- 好程式設計師web前端培訓分享HTMLCSS學習之CSS基礎程式設計師Web前端HTMLCSS
- 好程式設計師web前端培訓分享CSS基礎知識學習程式設計師Web前端CSS
- 好程式設計師web前端分享Vue學習筆記(一)程式設計師Web前端Vue筆記
- 好程式設計師web前端培訓分享kbone高階-事件系統程式設計師Web前端事件