亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 編程 > JavaScript > 正文

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

2019-11-20 20:57:00
字體:
來源:轉載
供稿:網友
目的是如果一個變量是已聲明未賦值,就可以直接賦值;并且不能改變變量的作用域

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

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

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

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

會顯示undefined,因為f()里面只是聲明了一個同名的局部變量。

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

未聲明的變量:if(noDeclareV==null),會報錯。

所以可以這樣:
復制代碼 代碼如下:

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

這樣也是不對的,因為js有‘聲明提前'的特性,即函數內聲明的變量在這個函數里和這個函數的子函數里都是可見的,不管它具體是在函數內的哪個位置聲明的。

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

修改一下:
復制代碼 代碼如下:

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

這樣就可以了。

寫成一個判斷函數,返回'noDeclare'表示變量未聲明,'noValue'表示變量已聲明未賦值,'hasValue'表示變量已聲明已賦值:
復制代碼 代碼如下:

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));

又錯了......console.log(f(b));時會報錯......
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
亚洲3p在线观看| 亚洲天堂免费观看| 亚洲国产小视频| 另类视频在线观看| 伊人久久久久久久久久| 亚洲精品午夜精品| 国产在线精品播放| 国产视频精品一区二区三区| 青青草99啪国产免费| 国产精品久久久久久久久借妻| 欧美视频在线观看免费| 少妇高潮 亚洲精品| 国产成人精品综合久久久| 日韩精品视频免费在线观看| 精品一区二区亚洲| 中文字幕亚洲一区二区三区五十路| 国产成人精品av| 久久久在线观看| 在线观看欧美日韩国产| 久久天天躁狠狠躁老女人| 欧美日韩国产精品一区二区不卡中文| 青草青草久热精品视频在线观看| 青青青国产精品一区二区| 欧美激情国内偷拍| 久久久久免费精品国产| 夜夜躁日日躁狠狠久久88av| 亚洲欧美在线第一页| 欧美大全免费观看电视剧大泉洋| 在线观看欧美www| 欧美激情二区三区| 粉嫩老牛aⅴ一区二区三区| 色妞色视频一区二区三区四区| 亚洲国内精品在线| 国产一区二区三区免费视频| 98精品国产高清在线xxxx天堂| 亚洲国产又黄又爽女人高潮的| 日韩成人中文电影| 日韩视频免费在线| 九九久久久久久久久激情| 欧美激情va永久在线播放| 91sao在线观看国产| 国产99视频在线观看| 久久久久一本一区二区青青蜜月| 久久久久久久影院| 综合久久五月天| 国产成人在线视频| 国产91在线播放九色快色| 91国自产精品中文字幕亚洲| 日韩免费看的电影电视剧大全| 岛国av一区二区在线在线观看| 粗暴蹂躏中文一区二区三区| 欧美老女人性生活| 欧美wwwxxxx| 亚洲精品自拍偷拍| 久久免费成人精品视频| 亚洲欧洲偷拍精品| 国色天香2019中文字幕在线观看| 川上优av一区二区线观看| 欧美激情欧美狂野欧美精品| 欧美综合在线观看| 欧美亚洲在线观看| 久久免费精品视频| 成人春色激情网| 亚洲人成网7777777国产| 亚洲国产精品电影在线观看| 欧美日韩国产一区二区三区| 久久久在线观看| 91精品久久久久久久久不口人| 欧美电影在线观看完整版| 欧美日韩国产影院| 久久91亚洲人成电影网站| 亚洲自拍av在线| 日韩中文字幕网站| 国产原创欧美精品| 色综合久久天天综线观看| 国产成人精品电影| 日韩高清免费在线| 欧美日韩精品在线播放| 国产精品精品一区二区三区午夜版| 亚洲天堂第一页| 亚洲精品福利免费在线观看| 成人精品在线观看| 久久免费高清视频| 亚洲成年人在线播放| 久久久免费精品视频| 欧美成人三级视频网站| 性欧美在线看片a免费观看| 亚洲xxxx视频| 国产一区二区免费| 中文字幕亚洲一区在线观看| 中文字幕亚洲欧美在线| 欧美日韩国产在线看| 国产97人人超碰caoprom| 欧美极品欧美精品欧美视频| 久久成人精品电影| 国产精品成人久久久久| 欧美视频一区二区三区…| 国产精品777| 久久人91精品久久久久久不卡| 欧美黑人国产人伦爽爽爽| 国产精品夜间视频香蕉| 日韩中文在线视频| 亚洲精品一区av在线播放| 欧美性xxxxx极品| 国产精品色悠悠| 亚洲人成网站777色婷婷| 亚洲国产日韩一区| 亚洲色图在线观看| 亚洲另类xxxx| 亚洲国产一区二区三区四区| 成人中文字幕+乱码+中文字幕| 国产成人福利夜色影视| 精品亚洲国产成av人片传媒| 91九色国产社区在线观看| 国产精品自拍小视频| 一区二区欧美日韩视频| 欧美日韩一区免费| 久久高清视频免费| 国a精品视频大全| 91av在线播放| 亚洲人线精品午夜| 欧美日韩一二三四五区| www.日韩欧美| 日韩国产精品视频| 亚洲欧美国产视频| 亚洲毛片在线免费观看| 国产精品久久久久久久久久久久久| 精品伊人久久97| 国产原创欧美精品| 久久久av一区| 亚洲美女激情视频| 97成人在线视频| 亚洲国产女人aaa毛片在线| 97视频人免费观看| 亚洲国产三级网| 欧美激情啊啊啊| 欧美高清不卡在线| 亚洲精品电影在线| 亚洲精品v欧美精品v日韩精品| 91精品国产综合久久男男| 亚洲自拍中文字幕| 国产精品一区二区av影院萌芽| 中文字幕亚洲色图| 国产在线一区二区三区| 97碰碰碰免费色视频| 久久久精品999| www.美女亚洲精品| 7777kkkk成人观看| 日韩欧美精品中文字幕| 一区二区三区四区精品| www.日韩系列| 亚洲精品www| 亚洲www视频| 日韩亚洲欧美成人| 国产精品三级网站| 日本a级片电影一区二区| 欧美大片在线看| 在线观看欧美日韩| 夜夜嗨av色一区二区不卡| 亚洲午夜性刺激影院| 中文字幕9999| 国产成人精品国内自产拍免费看| 欧美亚洲在线视频| 一区二区三区四区视频|