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...