国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 開發 > JS > 正文

有關js的變量作用域和this指針的討論

2024-09-06 12:41:04
字體:
來源:轉載
供稿:網友

在ECMAScript中,只有兩種執行環境,全局環境和函數環境,每個函數都是一個執行環境,包括嵌套函數。換句話說,其他情況下即使變量聲明在一對大括號中,在括號外部仍然可以訪問這些變量
一、變量作用域:[P71]

這一句話說的非常精辟:“在ECMAScript中,只有兩種執行環境,全局環境和函數環境,每個函數都是一個執行環境,包括嵌套函數。換句話說,其他情況下即使變量聲明在一對大括號中,在括號外部仍然可以訪問這些變量”。以下給出例子:
復制代碼 代碼如下:
for(var i=0; i<5; i++) {
var num = 20; // 在for語句中聲明的變量
}
alert(num); // 在for語句外部調用變量,仍然可以得到num的值

對異常語句也同樣可以:
復制代碼 代碼如下:
try {
var num = 20; // 在try語句中聲明的變量
a = b; // 引起一個異常
} catch(e) {
alert(num); // 在catch語句中調用變量,將得到20
} finally {
alert(num); // 在finally語句中調用變量,將得到20
}
alert(num); // 在try語句外部調用變量,將得到20

除了上面所演示的這兩種語句外,一對大括號也無法構成一個執行環境,例如:
復制代碼 代碼如下:
{ var num = 1;3 }

二、this指針:[P83]

在這里列出this在ECMAScript中的不同含義:

(1) 在全局執行環境中使用this,表示Global對象,在瀏覽器中就是window對象。

(2) 當在函數執行環境中使用this時,情況就有些復雜了。如果函數沒有明顯的作為非window對象的屬性,而只是定義了函數,不管這個函數是不是定義在另一個函數中,這個函數中的this仍然表示window對象。如果函數顯示地作為一個非window對象的屬性,那么函數中的this就代表這個對象。(當然可以使用apply或者call函數來取代默認this的引用,詳見[P88])

(3) 當通過new運算符來調用函數時,函數被當做一個構造函數,this指向構造函數創建出來的對象。
參考:
《JavaScript基礎與案例開發詳解》清華大學出版社

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 顺昌县| 浮山县| 涡阳县| 三明市| 梁河县| 松原市| 磴口县| 富顺县| 阿拉善盟| 伊川县| 汾阳市| 石阡县| 旬阳县| 武乡县| 晋城| 新巴尔虎右旗| 武定县| 忻州市| 乌鲁木齐市| 石城县| 藁城市| 永仁县| 张北县| 美姑县| 东丰县| 杂多县| 鄂尔多斯市| 广安市| 莫力| 双鸭山市| 新晃| 永登县| 阿坝县| 永宁县| 广平县| 凤翔县| 罗江县| 阿拉尔市| 乡城县| 恩平市| 庄浪县|