标签:
Javascript中使用var来定义变量,具体格式如下所示:
var name = 1;
如果只声明了变量而没有对变量进行初始化,那么此时变量的值就是undefined;(为什么是undefined请看变量第三节)
当然,也可以一次定义多个变量,如下所示:
var a1 = 1, a2 = true, a3 = “张三”;
由于javascript中的变量是松散类型的,也就是我们所说的弱类型的变量,因此不同类型的初始化的变量可以放在一行进行;
在javascript中定义变量时也可以不使用var,直接使用如下的方式进行初始化:
age = 20;
但是使用这种方式定义的变量属于全局变量,在浏览器中也就是windows的变量,这里就要牵扯到变量的作用域问题,什么意思呢?就是说使用var定义的变量是定义该变量的作用域中的局部变量;
上面说到使用var定义的变量是定义该变量的作用域中的局部变量,什么意思呢?举个例子来说明一下,如下所示:
可以看到在函数test内部定义的变量,在函数外部访问的时候报错了,意思就是说该变量没有定义,为什么会出现这种错误呢?这是因为,在函数内部定义的变量,当函数执行完之后该变量就被销毁了,因此在函数外部是无法访问的,说明title变量的作用域仅仅是在函数test内部,也就是说title是函数test的局部变量;
看第二个例子:
这个例子中在函数外部定义了两个变量,分别是使用var定义的title和直接定义的name,运行结果可以发现,不管是函数内部还是函数外部,都可以访问到这两个变量,说明定义的这两个变量都是全局变量,那么全局变量的作用域是什么呢?全局变量的作用域是window,也就是当前浏览器窗口,通过上面的例子也可以看到;
再看第三个例子:
看到这里有人会奇怪,第一个例子不是说在函数内部定义的变量的作用域在函数内部吗?现在为什么在函数外部又可以访问了?这个就要看清楚第一个例子和这个例子不同之处了,第一个例子中在函数内部定义的变量使用了var操作符,但是这里没有var操作符,什么意思呢?也就是说,在函数内部定义的变量,如果没有使用var操作符,那么这个变量就是全局变量。
上面三个例子都是在正常模式下,但是ECMAScript 5 中加入了严格模式,关于严格模式我上一篇文章已经介绍了,大家可以去看一下,当然也可以自己问度娘,我们把上面的例子改成严格模式:
开启严格模式之后,打印的结果如上所示,也就是说,在严格模式下,变量的定义必须使用var,否则直接报错。
最后注意一点,在严格模式下是不能使用eval和arguments作为变量名的,否则会报语法错误。
这部分内容本来我是看了http://www.cnblogs.com/sharpxiajun/p/4133462.html这篇博客才懂的,本来想写出来的,但是写的时候难免的会需要原文的一些图片或者见解,后来想想还是不写了,直接把连接贴出来,想看的大家自己去看原文吧,写的真的很好。
变量部分暂时就这样,下一篇开始写数据类型;
标签:
原文地址:http://www.cnblogs.com/liaidai/p/5101604.html