您当前的位置:首页 > 网站建设笔记 >

JavaScript 作用域解析

来源:JavaScript DOM 高级程序设计0

作用域是指对某一属性(变量)或方法(函数)具有访问权限的代码空间。在JavaScript中,作用域是在函数中进行维护的,即在下面这个函数中

function myFunction() {
    var myVariable = "inside";
}
myFunction();
alert(myVariable);

同样地,在这种情况下执行这个函数不会影响到外部作用域:

function myFunction() {
    var myVariable = "inside";
}
//定义变量
var myVariable = "outside";
//执行前面的函数
myFunction();
alert(myVariable);  //将提示outside

在这个例子中,因为在函数内部使用了var关键字来维护作用域链,所以执行myFunction()函数对位于其外部作用域中的myVariable没有影响。如果在myFunction()内部去掉为myVariable赋值时使用的var关键字,那么myVariable的作用域将会解析到myFunction()的外部,因此就会修改外部的变量:

function myFunction() {
    //没有使用var
    myVariable = "inside";
}
//定义变量
var myVariable = "outside";
//执行函数
myFunction();
alert(myVariable);  //将提示inside

作用域链是用来描述一种路径的术语,沿着该路径可以确定变量的值(或者当函数被调用时要使用的方法)。当给myVariable赋“inside”值时,myFunction()的作用域中没有使用var关键字,因此赋值操作会沿着作用域链查找到执行myFunction()的作用域中(在这种情况下是window对象内部),并修改其中myVariable实例的值。从本质上说,var关键字决定了哪个函数是特定变量的作用域链的终点。同样的逻辑也适用于取得变量值的情况。

除了var关键字之外,像下面这样将变量包含在定义函数时的圆括号内,与使用var关键字的效果是相同的,即该变量也会被包含在函数的作用域内:function myFunction(myVariable) { ... }

建站咨询

在线咨询真诚为您提供专业解答服务

咨询热线

137 1731 25507×24小时服务热线

微信交流

二维码终于等到你,还好我没放弃
返回顶部