變數作用域,閉包!!

2021-10-22 12:37:53 字數 735 閱讀 2004

作用域就是直接賦值的變數這個變數可以使用的區域,分為全域性和區域性,

自由變數,只有var存在變數提公升

不在任何函式內宣告的變數(函式內省略var的也算全域性)稱作全域性變數

就是在最外層定義的變數就被稱為全域性變數.

在函式內宣告的變數具有函式作用域,屬於區域性變數,就是在函式內部定義的變數,

只在函式內部有用,所以是區域性作用域。

宣告變數的方法 有var let const

var 宣告的變數可以變數提公升 變數提公升是將變數的宣告提公升至當前作用域的最頂部,而變數的賦值不會提公升

let/const宣告的變數讓當前**塊變成乙個暫時性的死區

內部變數不能在外部使用 他們宣告的變數不存在變數提公升

區別: const宣告的變數必須給預設值 const宣告的是常量不能重新賦值

const宣告的變數的值如果是引用資料型別 則資料內部的資料可以修改

假如在全域性中定義了變數a,在函式中使用了這個a,這個a就是自由變數,可以這樣理解,凡是跨了自己的作用域的變數都叫自由變數。

閉包就是乙個函式的引數是另乙個函式,或者乙個函式的返回值是另乙個函式,就被稱為閉包。

因為有函式巢狀函式,或者其他的複雜結構,所以就會造成this指向改變的問題。而要改變this指向有三種方法。

建構函式的prototype指向原型物件

例項物件的_ proto _指向建構函式的prototype所指向原型物件

原型物件的constructor指向建構函式

作用域 閉包

1.js執行順序 語法分析 預編譯 先生成go物件 1.函式執行生成ao物件 2.形參和變數作為ao物件的鍵名,鍵值是undefined 3.實參賦值給形參 4.在函式中找到函式宣告,把函式作為ao物件的屬性名,屬性值為函式體 執行js 作用域 變數作用範圍 1.作用域 變數作用範圍 1 函式作用域...

作用域,閉包,作用域鏈

一,作用域 變數在宣告它的函式及該函式所巢狀的任意函式是有定義的 例var num 2 function fun fun 二,作用域鏈 多個函式巢狀在一起,多個作用域相互巢狀,這是作用域鏈 var num 1 function fun function fun2 fun1 fun2 fun 訪問原則...

作用域 作用域鏈 閉包

閉包概念中的一些專業名詞概念不清晰 作用域鏈 本質是乙個指向變數物件的指標列表。函式的作用域鏈在函式呼叫完成後即被銷毀。變數物件 全域性變數物件 js執行時一直存在 活動變數物件 區域性變數物件,函式執行完畢後銷毀 函式在呼叫時建立本地的活動物件加上函式定義時預建立的作用域鏈,形成乙個新的用於執行函...