私有作用域的初級理解

2022-05-17 20:35:46 字數 1191 閱讀 8707

1.全域性變數:全域性作用域下宣告(預解釋)的變數是全域性變數

2.私有變數:私有作用域下,函式的形參和宣告的變數

3.作用域鏈:在私有作用域下,執行**的時候遇到變數,是私有變數則取私有變數,否則往上一級作用域查詢直到找到

4.函式每次執行的時候,會形成乙個新的私有作用域,然後按照如下步驟進行:

a.如果有形參先給形參賦值

b.進行當前私有作用域的預解釋

c.當前作用域的**從上到下執行

5.閉包:函式執行形成新的私有作用域,裡面的私有變數只在裡面有效,與外面的毫無關係

doctype html

>

<

html

lang

="en"

>

<

head

>

<

meta

charset

="utf-8"

>

<

title

>document

title

>

head

>

<

body

>

<

p>

模擬瀏覽器:

1.進去全域性作用域,開始預解釋,

var varible,

fn="function fn(varible)"

預解釋完畢

2.開始執行

全域性作用域:

varible="全域性"

列印varible("全域性")

函式執行建立新的私有作用域:

形參:varible="引數";

預解釋: varible已經宣告了不再宣告,預解釋完畢

開始執行: 列印varible("引數"),varible="私有" 重新賦值,列印varible("私有") 執行完畢

p>

<

script

>

varvarible ="

全域性";

function

fn(varible)

console.log(varible);

fn("引數

")script

>

body

>

html

>

看到乙個較好的demo: 

私有的作用域

私有的作用域 只有函式執行會產生私有的作用域 一般情況下,函式執行會形成乙個新的私有的作用域,當私有作用域中的 自行完成後,我們當前作用域都會主動的進行釋放和銷毀 當前私有作用域中的部分 記憶體被作用於以外的東西占用了,那麼當前的這個作用域就不能銷毀 a 函式執行返回了乙個引用資料型別的值,並且在函...

作用域的理解

什麼是作用域 作用域就是一套規則,控制著變數和函式的可訪問範圍。作用域外無法引用作用域內的變數,離開作用域後,作用域的變數的記憶體空間會被清楚,比如執行完函式。什麼是預解析 就是在瀏覽器解析 之前,把變數的宣告和函式的宣告提公升到該作用域的最上面 什麼是變數提公升 變數提公升就是在進入乙個執行上下文...

作用域理解

例1如下 include int main while test 5 域外 printf n域外 test d t域外 p n test,test return 0 執行結果如下 lnz lnz c test gcc action scope.c lnz lnz c test a.out 域外 te...