文章目錄
前言
1:什么叫作用域
一:全局作用域
1:全局變量的聲明
2:變量聲明和使用的順序
3:方法聲明和使用的順序
前言
1:什么叫作用域
? ? ? ? 可以起作用的范圍
function fun(){
var a = 1;
}
fun();
console.log(a);//會報錯
? ? ? ? 我們的作用域只有全局作用域和函數(shù)作用域。?
一:全局作用域
1:全局變量的聲明
? ? ? ? 直接編寫到Script里邊的代碼,就是全局作用域。全局作用域在頁面打開時創(chuàng)建在頁面關(guān)閉時銷毀。
? ? ? ? 在全局作用域中有一個全局對象window,我們可以直接使用。
? ? ? ? 對象,都是對現(xiàn)實對象的抽象,他依賴于一個瀏覽器窗口,window對象就代表是一個瀏覽器窗口,他由我們的瀏覽器創(chuàng)建,可以直接使用。
? ? ? ? window是瀏覽器創(chuàng)建的一個全局對象,在全局作用域里邊,我們創(chuàng)建的對象都會作為window對象的屬性進行保存。?如下操作可以證明:
?
? ? ? ? 全局作用域下的對象都會作為window對象的屬性保存。
? ? ? ? 全局作用域下的函數(shù)都會違window對象的方法進行保存。?
? ? ? ? 所以,我們說我們的方法和函數(shù)沒有區(qū)別。我們定義的函數(shù)實際上就是window對象的方法。
var a = 123;
b = 123;
? ? ? ? 定義一個全局作用域變量,使用或者不使用var都是可以的。不使用var的話,本質(zhì)上相當(dāng)于這樣:
a = 123;
window.a =123;
? ? ? ? 也就是直接往window對象當(dāng)中進行添加屬性和賦值。?
2:變量聲明和使用的順序
? ? ? ? 聲明需要在使用之前。
console.log(a);
var a = 123;
? ? ? ? 這樣寫會將var a提前到代碼前,這樣的話,console不會報錯,只是打印的undefined。因為賦值是在后邊處理的。
console.log(b);
b = 100;
? ? ? ? 這個沒有var,所以這個不會提前,這樣寫執(zhí)行就會報錯!?
3:方法聲明和使用的順序
fun();
function fun(){
console.log("xxxxxxxxxxxxxxxxxx");
}
? ? ? ? 使用函數(shù)聲明形式創(chuàng)建的函數(shù),會在調(diào)用前就已經(jīng)被加載。會直接把這個函數(shù)創(chuàng)建好了。所以,我們可以在函數(shù)聲明前調(diào)用函數(shù)。這是沒有任何問題的。
? ? ? ? 使用函數(shù)表達式創(chuàng)建的函數(shù)不會被提前,代碼表達如下:
var fun function (){
console.log("xxxxxxxxxxxxxxxxxx");
}
fun();
? ? ? ? fun()調(diào)用只能在后邊。因為var fun賦值實在。代碼執(zhí)行到的哪一行進行處理。
? ? ? ? 函數(shù)聲明會被提前,函數(shù)表達式不會被提前
? ? ? ? 全局作用域中的變量是全局變量,在頁面的任意部位都可以進行訪問。
文章來源:http://www.zghlxwxcb.cn/news/detail-735167.html
文章來源地址http://www.zghlxwxcb.cn/news/detail-735167.html
到了這里,關(guān)于JavaScript系列從入門到精通系列第十七篇:JavaScript中的全局作用域的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!