全域性變數:在函式以外用var宣告的變數在全域性都可以數用,就是全域性變數(如果頁面不關閉,那麼就不會釋放,就會佔記憶體,消耗記憶體)
區域性變數:在函式內部定義的變數是區域性變數,只能在函式內部使用,外部不能使用(*當函式呼叫完畢,區域性變數就釋放了);
全域性作用域:全域性變數使用的範圍
作用域鏈:
var num = 10;
function f1(num)
f3();
}f2();
} console.log(f1(10))
//結果為40
//如果f3中沒有num就會到f2中去尋找num,找到後列印f2中的值,如果沒有到f1中尋找num,如果有列印f1的num值,如果沒有再到全域性中尋找num,找到列印num的值,作用域鏈的形成與函式定義階段和函式在**執行怎麼執行,與關係。
預解析
在解析**之前,把變數的宣告和函式的宣告提前到當前所在的作用域的最上面,執行期上下文,找形參和變數宣告 將變數和形參作為ao的屬性名 值為undefined,將實參和形參統一,在函式裡面找函式宣告,值賦予函式體,函式執行完畢。
f1();
function f1()
上面的**把函式提前宣告了,所以f1呼叫的時候不會報錯
//案例1:
f1();
function f1()
上面的**相當於:
function f1()
f1();
案例2:
function fn(a,b)
console.log(b)// 列印 fn n(b)
c=50;
var c= function(e)
console.log(c); //fn
a=999;
function a()
console.log(a); //999
function b(d)
b=333;
console.log(b); //333
}fn(10,20)
函式作用域及作用域鏈
變數作用域 全域性作用域 在j ascript中全域性變數的作用域比較簡單,它的作用域是全域性的,在 的任何地方都是有定義的。然而函式的引數和區域性變數只在函式體內有定義 1.函式外面定義的變數擁有全域性作用域 var n 2 function fn console.log fn 1 console...
js 函式中的作用域和作用域鏈
js看似有 塊級作用域 其實它沒有,取而代之的是 函式作用域 在乙個 塊 一對花括號內 定義的變數在 塊外部是不可見的,且在 塊執行結束後被釋放掉。定義在該函式中的引數和變數在函式外部不可見 例子1 而乙個函式內部任何位置定義的變數,在該函式內部任何地方都可見 例子2 解釋二 也就是說,變數不僅在宣...
JS作用域和作用域鏈
什麼是js作用域?js作用域也就是js識別變數的範圍 1 全域性作用域 2 區域性作用域 3 e6的塊級作用域 全域性作用域 也就是定義在window下的變數範圍,在任何地方都可以訪問 區域性作用域 是只在函式內部定義的變數範圍 塊級作用域 簡單來說就是用let和const在任意的 塊中定義的變數都...