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

首頁 > 編程 > JavaScript > 正文

JavaScript中的關(guān)鍵字“VAR”使用詳解

2019-11-17 05:59:47
字體:
供稿:網(wǎng)友

JScript的語法教程里面說在聲明變量時忽略var要害字是完全合法的。但是事實經(jīng)常又證實想當(dāng)然的結(jié)果是不可靠的。

看看下面這幾個例子的結(jié)果就知道問題了:

<script language="javascript">

var var00 = 0;

document.write(var00 + '<br>');
var var01 = 1;

function foo()

{

document.write(var01);

var var01 = 1;

}

foo();

</script>


<script language="Javascript">

var00 = 0;

document.write(var00 + '<br>');
var01 = 1;

function foo()

{

document.write(var01);

var01 = 1;

}

foo();

</script>


<script language="javascript">

var00 = 0;

document.write(var00 + '<br>');
var01 = 1;

function foo()

{

document.write(var01);

var var01 = 1;

}

foo();

</script>


這三個例子的執(zhí)行結(jié)果分別是:

Results#region Results

No.1

0

undefined
No.2

0

1
No.3

0

undefined

#endregion


原來JavaScript的變量也是有作用域的,只是它非常的籠統(tǒng),就分為全局變量和函數(shù)變量。在第二個例子中得到0和1,是因為所有的變量都是全局變量,而且那個語句塊一共就定義了兩個變量。而第一個第三的函數(shù)外全局變量,確實說明var要害字有沒有都沒有關(guān)系。而函數(shù)內(nèi)的var要害字就很要害了,它說明第二個var01是函數(shù)內(nèi)的變量,所以在初始化var01前輸出自然就是'undefined'了。

那么函數(shù)里面是不是就屏蔽掉了全局的var01了呢?我們知道在C/C++可以使用::去訪問全局變量,那么JavaScript可不可以呢?這里其實我們只要明白了全局變量到底是什么東西,就好弄了。原來全局變量都是動態(tài)添加到Window對象的實例window上的屬性而以,所以我們只要在函數(shù)內(nèi)用:document.write(window.var01);就可以取到其值1了。同時在這個上下文中,function內(nèi)的this也是指向的window實例,我們也可以把引用寫成:this.var01。

順便說一下,重看JScript教程時,它說變量只能是[a-zA-Z_]+[a-zA-Z0-9_]*格式,可是'$'卻也可以作為變量名字符,而且還可以用在開頭,比如:$1234,更甚至于:$$$ 也是合法的變量名,faint。

<script type="text/javascript">

<!--

//這樣寫js的語句塊更好一些:)

-->

</script>

我想知道是不是.在調(diào)用一個函數(shù)時,程序執(zhí)行順序會先檢查函數(shù)內(nèi)部變量中,有沒有要害字var. 然后中再根據(jù)檢查結(jié)果給不同的變量付予不同的作用域和變量值.因為我看到在這三個函數(shù)中,var01變量都是在輸出語句之后.

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從來就沒有指過Test,而一直都是WScript的實例。

假如我們寫一個語句:var test = new Test(); 這時Test里的this就是指的Test的一個實例了,這個實例中假如要使用Global的變量,Lostinet給出的是一個方法。

不過最簡單還是把global傳入對象,這樣定義Test:

function Test(global)

{

// ...

}



發(fā)表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發(fā)表
主站蜘蛛池模板: 马山县| 江川县| 佛教| 新疆| 旺苍县| 焉耆| 茶陵县| 渝中区| 鄂托克前旗| 石嘴山市| 尚志市| 上饶市| 抚远县| 阿拉善右旗| 北安市| 凤庆县| 莒南县| 孝义市| 通海县| 渭源县| 哈尔滨市| 平谷区| 灌南县| 内丘县| 霍邱县| 龙海市| 连州市| 岐山县| 高雄县| 娄烦县| 辛集市| 深州市| 永吉县| 彭阳县| 大方县| 凤阳县| 胶南市| 桂东县| 湖南省| 濉溪县| 凭祥市|