`
haibin369
  • 浏览: 60093 次
  • 性别: Icon_minigender_1
  • 来自: 深圳
社区版块
存档分类
最新评论

关于JavaScript的作用域

阅读更多

      在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();

 

 

 

 

 

1
1
分享到:
评论

相关推荐

    关于JavaScript作用域你想知道的一切

    Javacript 中有一系列作用域的概念。对于新的JS的开发人员无法理解这些概念,甚至一些经验丰富的开发者也未必能。这篇文章主要目的帮助理解JavaScript中的一些概念如:scope,closure, this, namespace, function ...

    关于javascript作用域的常见面试题分享

    本文主要给大家分享了关于javascript作用域面试题的相关内容,分享出来供大家参考学习,下面来一起看看吧。 一、作用域: 在了解作用域之前,首先需要明白一些基础概念: 每一个变量、函数都有其作用的范围,超出...

    javascript变量作用域

    JavaScript 变量作用域详解 JavaScript 变量作用域是基于其特有的作用域链的。在 JavaScript 中,变量作用域是指变量可以被访问和修改的范围。 JavaScript 没有块级作用域,而是基于函数作用域和全局作用域的。 ...

    深入理解JavaScript作用域和作用域链

    JavaScript作用域是编程中至关重要的概念,它规定了变量和函数的可见性及生命周期。JavaScript主要有两种作用域:全局作用域和局部作用域。 全局作用域是指在代码的任何位置都可以访问的变量或函数,这通常包括在最...

    javascript执行环境,作用域理解

    JavaScript 执行环境和作用域的深层次理解 在 JavaScript 中,执行环境和作用域是两个非常重要和基本的概念,理解了这两个概念对于 JavaScript 中很多脚本的运行结果就能明白其中的道理了。执行环境是一个概念,一...

    深化理解javascript作用域其次篇之词法作用域和动态作用域_.docx

    深化理解javascript作用域其次篇之词法作用域和动态作用域_ 深化理解javascript作用域其次篇之词法作用域和动态作用域,是javascript中非常重要的一部分。理解词法作用域和动态作用域对javascript的编程至关重要。...

    JavaScript作用域原理

    JavaScript作用域是编程中至关重要的概念,它定义了变量、函数和对象的可见性和生命周期。在JavaScript中,作用域主要分为两种类型:全局作用域和局部作用域。此外,随着ES6的引入,块级作用域和函数作用域也变得...

    05-JavaScript作用域.pdf

    JavaScript作用域是指在JavaScript代码中,变量、常量、对象和函数能够访问的范围。在编程中,变量和函数的使用都受到作用域的限制,决定了它们能够在哪些代码块中被引用。作用域有助于防止变量命名冲突,也使得程序...

    深入理解JavaScript作用域共12页.pdf.zip

    JavaScript作用域是编程中至关重要的概念,尤其是在JavaScript这种动态类型的脚本语言中。它规定了变量、函数以及其它标识符的可见性和生命周期,是代码组织和管理的关键元素。本资料"深入理解JavaScript作用域共12...

    关于Javascript作用域链的八点总结

    JavaScript的作用域链是理解JavaScript变量查找和闭包的关键概念。以下是对这八个点的详细解释: 1. **定义时作用域链与运行时作用域链**: - 定义时作用域链([[Scope]])是在函数创建时确定的,它记录了函数声明...

    JavaScript作用域示例详解_.docx

    JavaScript作用域是编程中至关重要的概念,它规定了变量和函数的可见性和生命周期。了解JavaScript作用域对于编写高效、安全的代码至关重要。本篇将详细解释JavaScript作用域的几个核心特性,包括无块级作用域、函数...

    理解JavaScript作用域和作用域链

    作用域是JavaScript最重要的概念之一,想要学好JavaScript就需要理解JavaScript作用域和作用域链的工作原理。今天这篇文章对JavaScript作用域和作用域链作简单的介绍,希望能帮助大家更好的学习JavaScript。任何程序...

    javascript作用域

    讨论javascript作用域,很多人被javascript作用域搞迷糊了,这个应该有用。

Global site tag (gtag.js) - Google Analytics