国产99久久精品_欧美日本韩国一区二区_激情小说综合网_欧美一级二级视频_午夜av电影_日本久久精品视频

最新文章專題視頻專題問答1問答10問答100問答1000問答2000關鍵字專題1關鍵字專題50關鍵字專題500關鍵字專題1500TAG最新視頻文章推薦1 推薦3 推薦5 推薦7 推薦9 推薦11 推薦13 推薦15 推薦17 推薦19 推薦21 推薦23 推薦25 推薦27 推薦29 推薦31 推薦33 推薦35 推薦37視頻文章20視頻文章30視頻文章40視頻文章50視頻文章60 視頻文章70視頻文章80視頻文章90視頻文章100視頻文章120視頻文章140 視頻2關鍵字專題關鍵字專題tag2tag3文章專題文章專題2文章索引1文章索引2文章索引3文章索引4文章索引5123456789101112131415文章專題3
問答文章1 問答文章501 問答文章1001 問答文章1501 問答文章2001 問答文章2501 問答文章3001 問答文章3501 問答文章4001 問答文章4501 問答文章5001 問答文章5501 問答文章6001 問答文章6501 問答文章7001 問答文章7501 問答文章8001 問答文章8501 問答文章9001 問答文章9501
當前位置: 首頁 - 科技 - 知識百科 - 正文

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

來源:懂視網 責編:小采 時間:2020-11-27 21:20:55
文檔

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

利用try-catch判斷變量是已聲明未聲明還是未賦值_javascript技巧:目的是如果一個變量是已聲明未賦值,就可以直接賦值;并且不能改變變量的作用域 如果未聲明的話,就重新聲明, 在網上搜了下,常見的方法是if(typeof(a)=='undefined'){var a='ss';}, 但是這種方法對未聲明或已聲明未賦值的變量都會返回true。而且如果是
推薦度:
導讀利用try-catch判斷變量是已聲明未聲明還是未賦值_javascript技巧:目的是如果一個變量是已聲明未賦值,就可以直接賦值;并且不能改變變量的作用域 如果未聲明的話,就重新聲明, 在網上搜了下,常見的方法是if(typeof(a)=='undefined'){var a='ss';}, 但是這種方法對未聲明或已聲明未賦值的變量都會返回true。而且如果是

目的是如果一個變量是已聲明未賦值,就可以直接賦值;并且不能改變變量的作用域

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

在網上搜了下,常見的方法是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));時會報錯......

聲明:本網頁內容旨在傳播知識,若有侵權等問題請及時與本網聯系,我們將在第一時間刪除處理。TEL:177 7030 7066 E-MAIL:11247931@qq.com

文檔

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

利用try-catch判斷變量是已聲明未聲明還是未賦值_javascript技巧:目的是如果一個變量是已聲明未賦值,就可以直接賦值;并且不能改變變量的作用域 如果未聲明的話,就重新聲明, 在網上搜了下,常見的方法是if(typeof(a)=='undefined'){var a='ss';}, 但是這種方法對未聲明或已聲明未賦值的變量都會返回true。而且如果是
推薦度:
標簽: 變量 catch try
  • 熱門焦點

最新推薦

猜你喜歡

熱門推薦

專題
Top
主站蜘蛛池模板: 91在线 | 欧美 | 日本国产一区 | 国产黄 | 国产97在线看 | 日韩一二区| 在线亚洲精品 | 亚洲欧美国产另类 | 麻豆亚洲一区 | 国产精品原创视频 | 欧美日本道免费一区二区三区 | 久久国产一区二区 | 日本a黄| 日韩精品欧美亚洲高清有无 | 亚洲欧美自拍偷拍 | 国产一区精品在线观看 | 91视频一区| 免费啪啪网址 | 国产精品视频免费看 | 91精品国产综合久久久久久 | 青青青国产在线观看 | 亚洲欧美h | 成人免费视频77777 | 国产资源视频在线观看 | 国产精品亚洲一区二区三区在线播放 | 四虎成人精品免费影院 | 日本成人一级 | 九九久久香港经典三级精品 | 亚洲综合欧美 | 91精品国产高清久久久久久io | 亚洲另类第一页 | 一本色道久久88综合亚洲精品高清 | 国产96在线 | 亚洲午夜久久久久久91 | 在线免费黄色网址 | 国产国语高清在线视频二区 | 国产一精品一aⅴ一免费 | 国产成人精品日本亚洲语音2 | 亚洲黄色一区二区 | 久久精品国产一区二区三区日韩 | 日韩欧美在线免费观看 | 在线日韩欧美 |