一起自学前端开发!

JavaScript变量的作用域---JavaScript入门笔记

来源:原创    更新时间:2017-09-26 13:38:47    编辑:前端网编辑    浏览:2349

1. 什么是变量作用域?

变量的作用域是指变量有效性的范围,与变量定义的位置密切相关,作用域是从空间这个角度来描述变量的,也可以理解为可见性。在某个范围内变量是可见的,也就是可用的。按照作用域的不同,变量可分为局部变量和全局变量。

在函数中使用var关键字进行显式申明的变量是作为局部变量,而没有用var关键字,使用直接赋值方式声明的是全局变量

说明:

当我们使用访问一个没有声明的变量时,JS会报错。而当我们给一个没有声明的变量赋值时,JS不会报错,相反它会认为我们是要隐式申明一个全局变量,这一点一定要注意。

 

2. 全局变量

1). 定义全局变量的几种方式

全局变量的定义方式有很多种,下面我们将结合例子给同学们说明一下全局变量的定义方式。

例子1: 在js的function外定义一个变量。 

< >

var Sex ="男";

function count(){

alert(" sex is "+Sex);

}

</ >

说明:

这里Sex就是全局变量

例子2: 不使用var,直接给变量赋值,隐式的声明了全局变量Name。

< >

Name = "小明";

var Sex ="男";

function count(){

alert("name is "+Name+" sex is "+Sex);

}

</ >

说明:

这里Name,Sex都是全局变量。

例子3: 使用window.变量名定义变量,也是全局变量。   

Name = "小明";

var Sex ="男";

window.old="19";

function count(){

alert("name is "+Name+" sex is "+Sex+"old is"+old);

}

说明:

这里Name,Sex,old 都是全局变量。

 

总结:

1). 全局变量可以减少变量的个数,减少由于实际参数和形式参数的数据传递带来的时间消耗

2). 全局变量保存在静态存贮区,程序开始运行时为其分配内存,程序结束释放该内存。与局部变量的动态分配、动态释放相比,生存期比较长,因此过多的全局变量会占用较多的内存单元

3). 全局变量破坏了函数的封装性能。函数象一个黑匣子,一般是通过函数参数和返回值进行输入输出,函数内部实现相对独立。但函数中如果使用了全局变量,那么函数体内的语句就可以绕过函数参数和返回值进行存取,这种情况破坏了函数的独立性,使函数对全局变量产生依赖。同时,也降低了该函数的可移植性。

4). 全局变量使函数的代码可读性降低。由于多个函数都可能使用全局变量,函数执行时全局变量的值可能随时发生变化,对于程序的查错和调试都非常不利。因此,如果不是万不得已,最好不要使用全局变量。

 

3. 局部变量

局部变量:就是声明在函数体中的变量,并且只能在当前函数体内访问。

例子4:声明两个局部变量,下例中a,b 就是局部变量。

function test() {

    a = 30;

    var b = 20;

}

说明:

1). 当局部变量与全局变量同名的时候,全局变量会被局部变量覆盖。也就是说函数在使用该变量的时候会以局部变量覆盖全局变量,也就是只有局部变量会起效果。在此定义域中赋值等操作时都不会使用到全局变量。

2). 在main函数或其他函数里定义了局部变量,同时同名的全局变量同时也存在,当调用一个使用了该变量的函数(该变量在此函数中无定义)时,函数会使用全局变量。而不是main或其他函数中定义的同名变量


评论区

表情

共0条评论
  • 这篇文章还没有收到评论,赶紧来抢沙发吧~

相关内容

点击排行

随机新闻

评论排行榜