目的是如果一個變量是已聲明未賦值,就可以直接賦值;并且不能改變變量的作用域
如果未聲明的話,就重新聲明,
在網(wǎng)上搜了下,常見的方法是if(typeof(a)=='undefined'){var a='ss';},
但是這種方法對未聲明或已聲明未賦值的變量都會返回true。而且如果是這樣:
復(fù)制代碼 代碼如下:
var a;
function f(){
if(typeof(a)=='undefined')
{var a=1;}
}
f();
console.log(a);
復(fù)制代碼 代碼如下:
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( );
復(fù)制代碼 代碼如下:
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( );
復(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));
新聞熱點
疑難解答
圖片精選