使用var声明的变量会自动被添加到最接近的环境中。在函数内部,最接近的环境就是函数的局部环境;在with语句中,最接近的环境是函数环境。如果初始化变量时没有使用var声明,该变量会自动被添加到全局环境。如下所示:
function add (num1,num2){
var sum = num1 +num2 ;
return sum;
}
var result = add(10,20);//30
alert(sum);//由于sum不是有效的变量,因此导致错误
以上代码中的函数add()定义了一个名为sum 的局部变量,该变量包含加法操作的结果。虽然结果值从函数中返回了,但变量sum在函数外部是访问不到的。如果省略这个例子中的var关键字,那么当add()执行完毕后,sum也将可以访问到:
function add(num1,num2){
sum = num1 + num2;
return sum;
}
var result = add(10,20);//30
alert(sum);//30
这个例子中的变量sum在被初始化赋值时没有使用var关键字。于是,当调用完add()之后,添加到全局环境的变量sum将继续存在;即使函数已经执行完毕,后面的代码依旧可以访问它。