变量的范围是变量的可见性,而生命周期(生存周期)则从另一个角度
检查变量。
JS的变量范围分为全局变量和局部变量,它们被定义为局部变量,
函数外的函数称为全局变量(外部函数称为全局变量)。这里讨论的前提是var所声明的显式变量。var未定义的变量
默认为全局变量。当然,忽略var声明变量是不赞成的。
复制代码代码如下所示:
VaR的水珠= 4; / /函数声明全局变量
功能乐趣(){
var高度= 20;函数中的 var语句是一个局部变量。
重= 50;没有var语句的函数是一个全局变量。
}
(有趣);
警戒(重量);
没有一块范围JS,其中包含斜体,java,还有,在main
方法中写下代码
复制代码代码如下所示:
公共静态空主(字符串)…args){
对于(int = i 0;i < 5;i + +){
}
{
int = 10;
}
int = 20;
System.out.println(我); / /我是不可见的,语法分析是编译时间
错误。
System.out.println(J); / / J是不可见的,语法分析是编译时间错误。
System.out.println(Z); / / Z可见输出20
}
但是如果它在js中
复制代码代码如下所示:
对于(var i = 0;i < 5;i + +){
}
var obj = {姓名:百合};
对于(OBJ var attr){
}
{
var j=10;
}
警报(i);输出4,没有阻塞范围
警报(ATTR); / /名称输出,无阻滞范围
警报(j);输出10,没有阻塞范围
这也说明了避免在全局范围内与for循环同时声明变量的问题,否则会造成全局命名范围的污染。
当然,让关键字声明变量(参见: / / HTTPS开发商Mozilla。org / / new_in_javascript_1.7 CN)提出了js1.7,只
作用在for语句的范围。
复制代码代码如下所示:
对于(让i = 0;i < 5;i + +){
}
警报(i);
运行时间错误,表明未定义
js1.7需要这样引用
PS:Firefox2 +实现js1.7