欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

js通過(guò)var定義全局變量與在window對(duì)象上直接定義屬性的區(qū)別說(shuō)明

 更新時(shí)間:2022年09月05日 10:52:04   作者:Shawyu_  
這篇文章主要介紹了js通過(guò)var定義全局變量與在window對(duì)象上直接定義屬性的區(qū)別說(shuō)明,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教

js var定義全局變量與在window對(duì)象上直接定義屬性區(qū)別

關(guān)于window

一、所有 JavaScript 全局對(duì)象、函數(shù)以及變量均自動(dòng)成為 window 對(duì)象的成員。

二、全局變量是 window 對(duì)象的屬性。

三、全局函數(shù)是 window 對(duì)象的方法。

所有在全局作用域中聲明的變量、函數(shù)都會(huì)變成window對(duì)象的屬性和方法。如:

var name = "xiaomi";
console.log(window.name);//"xiaomi"

區(qū)別一

全局變量不能通過(guò)delete刪除,而window屬性上定義的變量可以通過(guò)delete刪除:

var num1=123;
window.num2=456;
delete num1;
delete num2;
console.log(num1); ?//123
console.log(num2); ?//num2 is not defined

全局變量num1之所以不能通過(guò)delete刪除,是因?yàn)橥ㄟ^(guò)var語(yǔ)句添加的全局變量有一個(gè)configurable屬性,其默認(rèn)值為false,如下,所以這樣定義的屬性不可以通過(guò)delete刪除。

var num1=123;
window.num2=456;
Object.getOwnPropertyDescriptor(window, "num1");
//Object {value: 123, writable: true, enumerable: true, configurable: false}
Object.getOwnPropertyDescriptor(window, 'num2');
//Object {value: 456, writable: true, enumerable: true, configurable: true}

區(qū)別二

嘗試訪問(wèn)未聲明的變量會(huì)報(bào)錯(cuò),xxx is not defined。

但是通過(guò)查詢window查詢,可以知道某個(gè)可能未聲明的變量是否存在,不會(huì)報(bào)錯(cuò),只會(huì)顯示undefined。

console.log(num1); // undefined
var num1=123;
console.log(num2); // ReferenceError: a is not defined
window.num2=456;

這一點(diǎn)可以用預(yù)編譯解釋,var聲明的變量會(huì)提升聲明到頂部。

區(qū)別三

在函數(shù)中使用var定義的變量是局部變量。

有時(shí)想要在外部也訪問(wèn)到函數(shù)里面的變量,就需要定義window對(duì)象屬性。

function () {
?? ?var num1 = 123;
?? ?window.num2 = 456;
}
console.log(num1); //num1 is not defined
console.log(num2); //456

js中定義的全局變量,局部變量

關(guān)于變量和參數(shù)問(wèn)題

var a ?= 2; //全局變量?
function func()
{
? ? var a = 1; ?//局部變量? ??
? ? ?a = 2; ? ? //全局變量?
}

函數(shù)外面定義的變量是全局變量,函數(shù)內(nèi)可以直接使用。

在函數(shù)內(nèi)部沒(méi)有使用var定義的=變量則為全局變量,

*在函數(shù)內(nèi)使用var關(guān)鍵字定義的變量是局部變量,即出了函數(shù)外邊無(wú)法獲取。

js函數(shù)定義的參數(shù)沒(méi)有默認(rèn)值,(形參的默認(rèn)值在之前只有新版火狐支持,目前新版的chrome瀏覽器也可以支持)

JS中聲明全局變量主要分為顯式聲明或者隱式聲明下面分別介紹。 

聲明方式一: 

使用var(關(guān)鍵字)+變量名(標(biāo)識(shí)符)的方式在function外部聲明,即為全局變量,否則在function聲明的是局部變量。該方式即為顯式聲明詳細(xì)如下:

? var test = 5;//全局變量?
? function a(){?
? ? var a = 3;//局部變量?
? ? alert(a);?
? }?
? function b(){?
? ? alert(test);?
? }?
? //a();//調(diào)用a方法,那么方法里面的內(nèi)容才會(huì)執(zhí)行?
? //b();//同上?

聲明方式二: 

沒(méi)有使用var,直接給標(biāo)識(shí)符test賦值,這樣會(huì)隱式的聲明了全局變量test。即使該語(yǔ)句是在一個(gè)function內(nèi),當(dāng)該function被執(zhí)行后test變成了全局變量。

? ? test = 5;//全局變量?
? ? function a(){?
? ? ? aa = 3;//也是全局變量?
? ? ? alert(test);?
? ? }?
? ? //a(); ?//輸出5?
? ? //alert(aa);//這里也可以方法a()方法里面的變量,因?yàn)閍a是全局變量?

聲明方式三: 

使用window全局對(duì)象來(lái)聲明,全局對(duì)象的屬性對(duì)應(yīng)也是全局變量,詳細(xì)如下:

<script>?
? window.test = 50;?
? alert(test);//輸出50?
</script>

以上為個(gè)人經(jīng)驗(yàn),希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。

相關(guān)文章

最新評(píng)論