js作用域

转载 2017年01月03日 12:58:35

js是与很多编程语言不同它没有级块作用域这么一个概念,其变量的作用域是以声明和函数来区分的,即var和function,也就是说只要在函数里面声明了var那么该声明的变量的作用域只能在其所在的函数范围内,请看以下的示例:

复制代码
<script type="text/javascript">
var a="aa";
function tester(){
    alert(a);
    var a;
    a ="bb";
    alert(a);
}
tester();
</script>
复制代码

大家猜猜输出的结果是什么,估计很多人会说:aa、bb;但是输入的结果是undefined、bb;为什么呢?还记得前面所说吗?js变量的作用域是由var和function所决定的,上例中,我们的变量定义在function test(){var aa;}内所以aa的作用域为test这个函数所定义的范围内,但是在调用第一个alert时候函数体内只有声明而出售值,所以其值取为undefined,而调用第二个alert的时候aa的值被赋值为bbbb;js中变量的作用域只会向上层去搜索,直到找到变量的var定义就会停止向上去搜索,如果都没有找到var定义,则变量的作用域范围就是全局的了。

在编写js代码时,我们应该尽量避免js变量的向上搜索,因为这样会造成一定程度上的性能问题,所以尽量把变量定义在函数体内是一个很好的做法。

也可以像下面这样,把所有的全局变量都封装到一个对象里面:

复制代码
<script>
var parameters = {
   a:1;
   b:2;
}
parameters.c=3;
</script>
复制代码

这样做就在一定程度上面减少了全局变量的使用,从而提高了性能。

js基础之作用域

  • 2017年11月06日 09:41
  • 6KB
  • 下载

js变量作用域

  • 2012年08月28日 11:49
  • 44KB
  • 下载

js中作用域和上下文等问题分析

博客 作用域、上下文、闭包、原型、继承 作用域: 作用域简单点说就是作用的区间,作用域又分为全局作用域和函数作用域,顾名思义全局作用域就是包含着共用的对象或者属性,而函数作用域是某个函数特有的作...

JS学习 变量的作用域等 实现简单的玛丽小游戏

u     js的闭包   js的闭包问题   1.      js的变量作用域   代码:            /*        var a=90; //...
  • sfshine
  • sfshine
  • 2013年02月13日 20:48
  • 428

[原创] js作用域(必考面试题)

运行结果:   运行结果:       运行结果:   分析:

JS中for循环变量作用域

var a=[]; for(var i = 0;i
  • kai_l
  • kai_l
  • 2016年03月17日 14:27
  • 15175

JS-变量,作用域和内存问题

基本类型和引用类型的值 ECMAScript变量可能包含两种不同数据类型的值:基本类型值和引用类型值      五种基本数据类型:Undefined,Null,Boolean,Number和Strin...

js变量和作用域的讲解和实例

js变量和作用域的讲解和实例最近浏览各大公司的面试题,js作用域问题几乎每个公司面试都会问到,针对作用域问题,我详细研究了一下javaScript的变量 Javascript和Java、C这些语言...

JS 函数与作用域 引用类型对象拷贝

函数声明和函数表达式有什么区别 http://www.jianshu.com/p/888fded98527 JavaScript 中需要创建函数的话,有两种方法:函数声明、函数表达...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:js作用域
举报原因:
原因补充:

(最多只允许输入30个字)