麻豆小视频在线观看_中文黄色一级片_久久久成人精品_成片免费观看视频大全_午夜精品久久久久久久99热浪潮_成人一区二区三区四区

首頁(yè) > 編程 > JavaScript > 正文

JavaScript中的關(guān)鍵字"VAR"使用詳解 分享

2019-11-20 22:29:16
字體:
來(lái)源:轉(zhuǎn)載
供稿:網(wǎng)友
看看下面這幾個(gè)例子的結(jié)果就知道問(wèn)題了:
這三個(gè)例子的執(zhí)行結(jié)果分別是:
復(fù)制代碼 代碼如下:

Results#region Results
No.1
0
undefined
No.2
0
1
No.3
0
undefined
#endregion

原來(lái)JavaScript的變量也是有作用域的,只是它非常的籠統(tǒng),就分為全局變量和函數(shù)變量。在第二個(gè)例子中得到0和1,是因?yàn)樗械淖兞慷际侨肿兞浚夷莻€(gè)語(yǔ)句塊一共就定義了兩個(gè)變量。而第一個(gè)第三的函數(shù)外全局變量,確實(shí)說(shuō)明var關(guān)鍵字有沒(méi)有都沒(méi)有關(guān)系。而函數(shù)內(nèi)的var關(guān)鍵字就很關(guān)鍵了,它說(shuō)明第二個(gè)var01是函數(shù)內(nèi)的變量,所以在初始化var01前輸出自然就是'undefined'了。
那么函數(shù)里面是不是就屏蔽掉了全局的var01了呢?我們知道在C/C++可以使用::去訪問(wèn)全局變量,那么JavaScript可不可以呢?這里其實(shí)我們只要明白了全局變量到底是什么東西,就好弄了。原來(lái)全局變量都是動(dòng)態(tài)添加到Window對(duì)象的實(shí)例window上的屬性而以,所以我們只要在函數(shù)內(nèi)用:document.write(window.var01);就可以取到其值1了。同時(shí)在這個(gè)上下文中,function內(nèi)的this也是指向的window實(shí)例,我們也可以把引用寫(xiě)成:this.var01。
順便說(shuō)一下,重看JScript教程時(shí),它說(shuō)變量只能是[a-zA-Z_]+[a-zA-Z0-9_]*格式,可是'$'卻也可以作為變量名字符,而且還可以用在開(kāi)頭,比如:$1234,更甚至于:$$$ 也是合法的變量名,faint。
我想知道是不是.在調(diào)用一個(gè)函數(shù)時(shí),程序執(zhí)行順序會(huì)先檢查函數(shù)內(nèi)部變量中,有沒(méi)有關(guān)鍵字var. 然后中再根據(jù)檢查結(jié)果給不同的變量付予不同的作用域和變量值.因?yàn)槲铱吹皆谶@三個(gè)函數(shù)中,var01變量都是在輸出語(yǔ)句之后.
復(fù)制代碼 代碼如下:

function get_global_var(___name)
{
return eval(___name);
}
function set_global_var(___name,___value)
{
eval(___name+"=___value");
}
var aa=11;
Test();
WScript.Echo(aa);//22
function Test()
{
var aa=33;
WScript.Echo(get_global_var("aa"));//11
set_global_var("aa",22);
WScript.Echo(get_global_var("aa"));//22
WScript.Echo(aa);//33
}

在上面的例子中this從來(lái)就沒(méi)有指過(guò)Test,而一直都是WScript的實(shí)例。
如果我們寫(xiě)一個(gè)語(yǔ)句:var test = new Test(); 這時(shí)Test里的this就是指的Test的一個(gè)實(shí)例了,這個(gè)實(shí)例中如果要使用Global的變量,Lostinet給出的是一個(gè)方法。
不過(guò)最簡(jiǎn)單還是把global傳入對(duì)象,這樣定義Test:
復(fù)制代碼 代碼如下:

function Test(global)
{
// ...
}

然后這樣創(chuàng)建實(shí)例:var test = new Test(this); 就可以在Test實(shí)例中使用global的對(duì)象和屬性了。
是不是這樣,在new的實(shí)例中,this就指實(shí)例,否則都指WScript?如果這樣的話,換了腳本引擎,是不是情況又會(huì)不同?這個(gè)是標(biāo)準(zhǔn)嗎?
new constructor[(arguments)];
new 運(yùn)算符執(zhí)行下面的任務(wù):
?創(chuàng)建一個(gè)沒(méi)有成員的對(duì)象。
?為那個(gè)對(duì)象調(diào)用構(gòu)造函數(shù),傳遞一個(gè)指針給新創(chuàng)建的對(duì)象作為 this 指針。
?然后構(gòu)造函數(shù)根據(jù)傳遞給它的參數(shù)初始化該對(duì)象。
要注意的是即使當(dāng)前作用域內(nèi)沒(méi)有調(diào)用new,但可能在其父作用域里是調(diào)用了new的,所以“在new的實(shí)例中,this就指實(shí)例,否則都指WScript?”,前半句對(duì),而后半句不一定。
發(fā)表評(píng)論 共有條評(píng)論
用戶名: 密碼:
驗(yàn)證碼: 匿名發(fā)表
主站蜘蛛池模板: 欧美另类综合 | 爱福利视频网 | 国产色片| 美国一级黄色毛片 | 国产精品亚洲精品久久 | 视频一区二区中文字幕 | 激情五月少妇a | 日本大片在线播放 | 欧美成人免费在线视频 | 精精国产xxxx视频在线播放7 | 91短视频在线观看 | 国产毛片毛片 | 西川av在线一区二区三区 | 国产在线观看91精品 | 国产精品av久久久久久无 | 久久精品视频亚洲 | 色戒在线版 | 欧美日韩在线免费观看 | japanese javhd| 日本黄色大片免费观看 | 国产午夜三级一区二区三桃花影视 | 羞羞视频在线免费 | 羞羞视频一区二区 | 日韩精品网站在线观看 | 精品国产一区二区在线观看 | 久草在线视频福利 | 中文字幕电影免费播放 | 欧美激情综合在线 | 久久亚洲精品久久国产一区二区 | 精品一区二区久久久久久按摩 | japanese javhd| 97久色| 久草在线观看福利视频 | 国产色爱综合网 | 日韩一级片毛片 | 国产成年人视频网站 | 国产一级免费不卡 | 黄色一级片免费观看 | 欧美大电影免费观看 | 成人在线观看小视频 | 免费h片 |