js基礎知識之-----做用域以及變量提高


東西不用會生鏽,感情不維會生怨。不管何種感情,不維護都會疏遠。
bash


1、做用域:函數

js中的做用域分爲:全局做用域和局部做用域
當變量定義在一個函數中時,變量就在局部做用域中,而定義在函數以外的變量則從屬於全局做用域。每一個函數在調用的時候會建立一個新的做用域。
⑴全局做用域:
當你在文檔中(document)編寫 JavaScript 時,你就已經在全局做用域中了。JavaScript 文檔中(document)只有一個全局做用域。定義在函數以外的變量會被保存在全局做用域中。
⑵局部做用域:
定義在函數中的變量就在局部做用域中。而且函數在每次調用時都有一個不一樣的做用域。這意味着同名變量能夠用在不一樣的函數中。由於這些變量綁定在不一樣的函數中,擁有不一樣做用域,彼此之間不能訪問。
2、⑴變量提高:
變量提高即將變量聲明提高到它所在做用域的最開始的部分。
如下是一個簡單的例子:

console.log(a); // undefined
var a = 10; 
console.log(a); // 10 
// 以上 變量a在定義之初就會被提高到所在做用域的最開始部分,因此第一次打印的是undefined,第二次賦值後打印的是10複製代碼

 ⑵函數提高:
js中建立函數有兩種方式:函數聲明式和函數字面量式。只有函數聲明才存在函數提高!

console.log(fun1); //function fun1(){}
console.log(fun2); //undefined
function fun1(){}
var fun2 = function(){}
出現上面的狀況,是由於函數聲明的時候提高了,提到了最開始部分,因此fun1纔會被打印,而fun2是函數賦值的變量,因此是屬於變量提高,爲undefined複製代碼

注意:「函數會首先被提高,而後纔是變量」。

相關文章
相關標籤/搜索