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

首頁 > 編程 > JavaScript > 正文

JavaScript 變量作用域分析

2019-11-20 23:46:33
字體:
來源:轉載
供稿:網友
復制代碼 代碼如下:

/* 代碼1 */
var scope = "global ";
function checkScope() {
var scope = "local ";
function childCheck() {
var scope = "childLocal ";
document.write(scope);
}
function childUndefined() {
document.write(scope);
var scope;
}
function childOverride() {
scope = "childOverride ";
document.write(scope);
}
document.write(scope); //輸出"local"
childCheck(); //輸出"childLocal"
childUndefined(); //輸出"undefined"
childOverride(); //輸出"childOverride"
document.write(scope); //輸出"childOverride"
}
checkScope(); //輸出"local childLocal undefinedchildOverride childOverride"
document.write(scope); //輸出"global "

全局作用域與局部作用域
全局(global)變量的作用域是全局的,在Javascript中處處有定義;而函數內部聲明的變量是局部(local)變量,其作用域是局部性的,只在函數體內部有定義。對于下面的輸出讀者應不會感到意外。
復制代碼 代碼如下:

/* 代碼2 */
var scope = "global";
function checkScope() {
var scope = "local";
document.write(scope);
}
checkScope(); //輸出"local"
document.write(scope); //輸出"global"

全局變量作用域中使用變量可以不用var語句,但在聲明局部變量是一定要使用var語句,否則會視為對全局變量的引用。看下面代碼:
復制代碼 代碼如下:

/* 代碼3 */
var scope = "global";
function checkScope() {
scope = "local";
document.write(scope);
}
checkScope(); //輸出"local"
document.write(scope); //輸出"local"

沒有塊作用域
Javascript沒有塊級作用域,函數中聲明的變量在整個函數中都是有定義的。對于下面的代碼對于生疏的讀者可能頗感意外:
復制代碼 代碼如下:

/* 代碼4 */
var scope = "global";
function checkScope() {
document.write(scope); //語句4.1
var scope = "local"; //語句4.2
document.write(scope);
}
checkScope(); //輸出"undefinedlocal"

由于語句4.1(var scope = "local";)聲明的變量在整個checkScope函數作用域內都有效,因此在語句4.2(document.write(scope); )執行的時scope引用的是局部變量,而此時局部變量scope尚未定義,所以輸出”undefined”。因此一個好的編程習慣是將所有的變量聲明集中起來放在函數的開頭。

在了解了上述內容之后,讀者再看看代碼1應該不會感到困惑了。

對象的屬性變量
對象的屬性變量比較容易理解,看一下下面的代碼讀者應該不會感到疑惑。
復制代碼 代碼如下:

/* 代碼5 */
var scope = "global ";
var obj = new Object();
obj.scope = "object ";
obj.checkScope = function () {
var scope = "loacl ";
document.write(scope); //輸出"loacl"
document.write(this.scope); //輸出"object"
document.write(window.scope); //輸出"global"
}
obj.checkScope(); //輸出"loacl object global"
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 桂东县| 海盐县| 西青区| 丹阳市| 双流县| 泽普县| 娄底市| 张北县| 封开县| 广河县| 石泉县| 阿克| 泾川县| 博客| 陵水| 改则县| 阳朔县| 水富县| 五华县| 巴楚县| 额济纳旗| 洪洞县| 革吉县| 收藏| 太湖县| 合山市| 玉林市| 霍林郭勒市| 寻甸| 镇宁| 吉隆县| 石嘴山市| 怀安县| 轮台县| 聊城市| 锡林浩特市| 历史| 兴和县| 寿阳县| 渝中区| 化德县|