最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

利用try-catch判斷變量是已聲明未聲明還是未賦值

 更新時(shí)間:2014年03月12日 16:49:49   作者:  
這篇文章主要介紹了利用try-catch判斷變量是已聲明未賦值還是未聲明,需要的朋友可以參考下
目的是如果一個(gè)變量是已聲明未賦值,就可以直接賦值;并且不能改變變量的作用域

如果未聲明的話,就重新聲明,

在網(wǎng)上搜了下,常見(jiàn)的方法是if(typeof(a)=='undefined'){var a='ss';},

但是這種方法對(duì)未聲明或已聲明未賦值的變量都會(huì)返回true。而且如果是這樣:
復(fù)制代碼 代碼如下:

var a;
function f(){
if(typeof(a)=='undefined')
{var a=1;}
}
f();
console.log(a);

會(huì)顯示undefined,因?yàn)閒()里面只是聲明了一個(gè)同名的局部變量。

但是如果是已聲明未賦值的變量:if(noValueV==null),會(huì)返回true;

未聲明的變量:if(noDeclareV==null),會(huì)報(bào)錯(cuò)。

所以可以這樣:
復(fù)制代碼 代碼如下:

function f( ){
if(typeof(v)=='undefined'){
try{
if(v==null)//說(shuō)明v是已聲明未賦值
v=1; //如果v是全局變量,這樣不會(huì)改變它的作用域
}
catch(err){//說(shuō)明v是未聲明
var v;v=2;
}
}
console.log(v);
}
f( );

這樣也是不對(duì)的,因?yàn)閖s有‘聲明提前'的特性,即函數(shù)內(nèi)聲明的變量在這個(gè)函數(shù)里和這個(gè)函數(shù)的子函數(shù)里都是可見(jiàn)的,不管它具體是在函數(shù)內(nèi)的哪個(gè)位置聲明的。

所以由于上面里的var v;導(dǎo)致不管哪種情況都是只走try。

修改一下:
復(fù)制代碼 代碼如下:

function f( ){
if(typeof(v)=='undefined'){
try{
if(v==null)//說(shuō)明v是已聲明未賦值
v=1; //如果v是全局變量,這樣不會(huì)改變它的作用域
}
catch(err){//說(shuō)明v是未聲明
eval('var v');v=2; //這里不一樣
}
}
console.log(v);
}
f( );

這樣就可以了。

寫(xiě)成一個(gè)判斷函數(shù),返回'noDeclare'表示變量未聲明,'noValue'表示變量已聲明未賦值,'hasValue'表示變量已聲明已賦值:
復(fù)制代碼 代碼如下:

function f(v){
if(typeof(v)=='undefined'){
try{
if(v==null)
return 'noValue';
}
catch(err){
return 'noDeclare';
}
}
else return 'hasValue';
}
var a;
console.log(f(a));
a=0;
console.log(f(a));
console.log(f(b));

又錯(cuò)了......console.log(f(b));時(shí)會(huì)報(bào)錯(cuò)......

相關(guān)文章

  • js中的閉包學(xué)習(xí)心得

    js中的閉包學(xué)習(xí)心得

    這篇文章主要介紹了js中的閉包學(xué)習(xí)心得以及重要點(diǎn)的代碼寫(xiě)法,對(duì)此有興趣的朋友跟著小編一起學(xué)習(xí)下吧。
    2018-02-02
  • JavaScript類型檢測(cè)之typeof 和 instanceof 的缺陷與優(yōu)化

    JavaScript類型檢測(cè)之typeof 和 instanceof 的缺陷與優(yōu)化

    在javascript中,typeof 和 instanceof 是用來(lái)判斷數(shù)據(jù)類型比較通用的兩個(gè)方法,這篇文章的目的是通過(guò)對(duì)這兩個(gè)方法介紹來(lái)分析其存在的不足并提出優(yōu)化方案
    2016-01-01
  • JS?中的URLSearchParams?對(duì)象操作(以對(duì)象的形式上傳參數(shù)到url)

    JS?中的URLSearchParams?對(duì)象操作(以對(duì)象的形式上傳參數(shù)到url)

    這篇文章主要介紹了JS中URLSearchParams的基本用法,本文結(jié)合示例代碼給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2022-12-12
  • 使用openSpeDiv方法實(shí)現(xiàn)Ecshop登錄彈窗框效果

    使用openSpeDiv方法實(shí)現(xiàn)Ecshop登錄彈窗框效果

    在ECSHOP的目錄/JS/common.js中有一個(gè)openSpeDiv方法是實(shí)現(xiàn)ECSHOP的彈窗效果的。接下來(lái)通過(guò)本文給大家分享使用openSpeDiv方法實(shí)現(xiàn)Ecshop登錄彈窗框效果,需要的朋友參考下
    2017-03-03
  • 解決小程序無(wú)法觸發(fā)SESSION問(wèn)題

    解決小程序無(wú)法觸發(fā)SESSION問(wèn)題

    這篇文章主要介紹了解決小程序無(wú)法觸發(fā)SESSION問(wèn)題,本文給大家介紹的非常詳細(xì),具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2020-02-02
  • 子窗口、父窗口和Silverlight之間的相互調(diào)用

    子窗口、父窗口和Silverlight之間的相互調(diào)用

    前兩天做 silverlight 的東西,主頁(yè)面打開(kāi)一個(gè)子頁(yè)面,然后子頁(yè)面中包含一個(gè) silverlight 應(yīng)用程序那難免會(huì)涉及到他們?nèi)呦嗷フ{(diào)用的問(wèn)題
    2010-08-08
  • 在iframe中使bootstrap的模態(tài)框在父頁(yè)面彈出問(wèn)題

    在iframe中使bootstrap的模態(tài)框在父頁(yè)面彈出問(wèn)題

    這篇文章主要介紹了在iframe中使bootstrap的模態(tài)框在父頁(yè)面彈出問(wèn)題,解決方法非常不錯(cuò),具有參考借鑒價(jià)值,需要的朋友可以參考下
    2017-08-08
  • JS實(shí)現(xiàn)點(diǎn)餐自動(dòng)選擇框(案例分析)

    JS實(shí)現(xiàn)點(diǎn)餐自動(dòng)選擇框(案例分析)

    這篇文章主要介紹了JS實(shí)現(xiàn)點(diǎn)餐自動(dòng)選擇框功能,點(diǎn)擊上方全選和全不選選擇框?qū)崿F(xiàn)對(duì)應(yīng)功能,本文分步驟通過(guò)實(shí)例代碼講解的非常詳細(xì),需要的朋友可以參考下
    2019-12-12
  • Three.js入門(mén)之hello world以及如何繪制線

    Three.js入門(mén)之hello world以及如何繪制線

    這篇文章主要給大家介紹了關(guān)于Three.js入門(mén)之hello world以及如何繪制線的相關(guān)資料,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧。
    2017-09-09
  • JavaScript 代碼分割的實(shí)現(xiàn)步驟

    JavaScript 代碼分割的實(shí)現(xiàn)步驟

    JavaScript代碼分割是一種優(yōu)化策略,通過(guò)將代碼拆分成較小的塊,只在需要時(shí)加載,可以降低初始加載時(shí)間,減小頁(yè)面體積,本文主要介紹了JavaScript代碼分割的實(shí)現(xiàn)步驟,感興趣的可以了解一下
    2024-01-01

最新評(píng)論

兴和县| 马关县| 甘谷县| 安达市| 泗阳县| 太仆寺旗| 临汾市| 河源市| 清水河县| 大荔县| 界首市| 运城市| 武宣县| 城口县| 鸡东县| 五寨县| 东辽县| 莲花县| 珠海市| 华蓥市| 阳泉市| 合肥市| 高阳县| 来宾市| 米易县| 镇原县| 亚东县| 若尔盖县| 哈巴河县| 博野县| 和林格尔县| 牟定县| 浠水县| 固原市| 禹城市| 仁化县| 荔浦县| 井冈山市| 海安县| 从化市| 策勒县|