目标是,如果一个变量赋值,也可以直接分配;它不能改变变量的范围。

如果没有申报,请回收。

普通法的在线搜索是如果(typeof(一)= = 'undefined){ var a = 'ss;},

但此方法返回true,未申报或申报未赋值的变量。如果是这样的话,
复制代码代码如下所示:
VaR;
函数f(){
如果(typeof(一)= = 'undefined)
{ a = 1;}
}
(f);
console.log(一);

未定义的显示,因为f()仅声明同名的本地变量。

但如果未赋值的变量声明:如果(novaluev = = null),则返回真;

该声明的变量:如果(nodeclarev = = null),将错误的报道。

所以可以:
复制代码代码如下所示:
函数f(){
如果(typeof(V)= = 'undefined){
尝试{
如果(V = = null) / / V宣布未分配
v = 1;如果v是一个全局变量,这不会改变它的作用域。
}
未声明catch(错误)
var;v=2;
}
}
console.log(V);
}
(f);

这也是错误的,因为js具有前面声明的属性

因此,因为在顶部的var V,它导致只在任何情况下尝试。

修改它:
复制代码代码如下所示:
函数f(){
如果(typeof(V)= = 'undefined){
尝试{
如果(V = = null) / / V宣布未分配
v = 1;如果v是一个全局变量,这不会改变它的作用域。
}
未声明catch(错误)
eval('var V);V = 2; / /这里是不一样的
}
}
console.log(V);
}
(f);

没关系

它被写成判断函数。它返回to'nodeclare。这意味着变量不声明。'novalue意味着变量已宣布未分配的变量。'hasvalue'indicates已宣告分配。
复制代码代码如下所示:
函数f(v){
如果(typeof(V)= = 'undefined){
尝试{
如果(v = NULL)
return'novalue;
}
捕捉(错误){
return'nodeclare;
}
}
其他return'hasvalue;
}
VaR;
console.log(f(a));
a = 0;
console.log(f(a));
console.log(F(B));

和错误…console.log(F(B));这将是错误的…