在Java等语言中,变量是具有块作用域存在的,即一个变量的作用范围是在定义它的由“{”和“}”括起来的语句块中,在这个块中该变量不可见。但是在JavaScript里,变量的作用域是函数范围的作用域,即一个变量在定义它的函数之内都可见,即使在该变量的定义语句之前。
function scopeTest()
{
alert(var1); //结果为undefined,可用但还未初始化
var var1 = "var1"; //定义变量var1,变量函数内可见,但在赋值语句之前可能未被初始化
var2 = "var2"; //因为var2函数内可见 ,因此可以在定义语句前赋值(不是全局变量)
alert(this.var2); //结果为undefined,证明上一条语句不是定义了一个全局变量
alert(var2); //结果为var2,定义并赋值了
var var2; //定义变量var2
}
在JavaScript中,当使用一个变量时,是沿着从使用处开始的作用域链查找,当使用处所在的function定义了该变量时,使用该定义的变量;当这个function不存在这个变量时,会继续往外一层的function寻找,直至达到最外层仍不能找到该变量的定义或着全局变量赋值语句,则出错。
function scopeChainTest()
{
var v1 = "v1 from scopeChainTest()";
var v2 = "v2 from scopeChainTest()";
var v3 = "v3 from scopeChainTest()";
outer();
function outer()
{
var v1 = "v1 from outer()";
var v2 = "v2 from outer()";
inner();
function inner()
{
var v1 = "v1 from inner()";
alert(v1);//结果为v1 from inner()
alert(v2);//结果为v2 from outer()
alert(v3);//结果为v3 from scopeChainTest()
}
}
}
//调用scopeChainTest()
window.onload = scopeChainTest();
分享到:
相关推荐
本文主要给大家分享了关于javascript作用域面试题的相关内容,分享出来供大家参考学习,下面来一起看看吧。 一、作用域: 在了解作用域之前,首先需要明白一些基础概念: 每一个变量、函数都有其作用的范围,超出...
关于JavaScript作用域你想知道的一切,本文全部告诉大家,帮助大家全面的了解JavaScript作用域,感兴趣的小伙伴们可以参考一下
javascript变量作用域 希望对大家有帮助
对javascript执行环境,作用域的深层次理解,
作用域是JavaScript最重要的概念之一,想要学好JavaScript就需要理解JavaScript作用域和作用域链的工作原理。今天这篇文章对JavaScript作用域和作用域链作简单的介绍,希望能帮助大家更好的学习JavaScript。任何程序...
1. JavaScript函数的作用域链分为定义时作用域链和运行时作用域链; 2.函数被定义的时候,它有一个属性[[scope]]标明它的定义作用域链,定义时作用域链[[scope]]遵守这样的规则:一个函数的定义时作用域链[[scope]]...
深化理解javascript作用域其次篇之词法作用域和动态作用域_.docx
讨论javascript作用域,很多人被javascript作用域搞迷糊了,这个应该有用。
作用域是JavaScript最重要的概念之一,想要学好JavaScript就需要理解JavaScript作用域和作用域链的工作原理。今天这篇文章对JavaScript作用域和作用域链作简单的介绍,希望能帮助大家更好的学习JavaScript。 ...
01JavaScript作用域.md
理解JavaScript变量作用域.pdf 本人还有几十本经典javascript书籍以及无数javascript资料,要的加我qq 568094881,本人网址:www.maoshanhai.com
深入理解JavaScript作用域
作用域是JavaScript最重要的概念之一,想要学好JavaScript就需要理解JavaScript作用域和作用域链的工作原理。今天这篇文章对JavaScript作用域示例详解的介绍,希望能帮助大家更好的学习JavaScript。 任何程序设计...
JavaScript 作用域 和作用域链作用域作用域链 作用域 作用域就是变量与函数的可访问范围,作用域控制着变量与函数的可见性和生命周期。换句话说,作用域决定了代码区块中变量和其他资源的可见性。 function fun() { ...
JavaScript作用域示例详解_.docx