天天看点

《JavaScript核心概念及实践》——2.2 变量

本节书摘来自异步社区《javascript核心概念及实践》一书中的第2章,第2.2节,作者:邱俊涛著,更多章节内容可以访问云栖社区“异步社区”公众号查看

变量,是对值的存储空间的引用,通过一个名字将一个值关联起来,以后通过变量就可以引用到该值,比如:

当我们下一次要引用"hello, wrold"这个串进行某项操作时,我们只需要使用变量str即可。同样,我们可以用10num来表示102.345。变量的作用就是将值“存储”在这个变量上,以方便后续代码对该值的使用。

2.2.1 基本类型和引用类型

在上一小节,我们介绍了javascript中的数据类型,其中基本类型如数字、布尔值,它们在内存中都有固定的大小,我们通过变量来直接访问基本类型的数据。而对于引用类型,如对象、数组和函数,由于它们的大小在原则上是不受任何限制的,故我们通过对其引用的访问来访问它们本身,引用本身是一个地址,即指向真实存储复杂对象的位置。

基本类型和引用类型的区别是比较明显的,我们来看几个例子。

运行结果如下:

这样的运行结果应该在你的意料之内,没有什么特别之处,我们再来看看引用类型的例子,由于数组的长度非固定,可以动态增删,因此数组为引用类型。

引用指向的是地址,也就是说,引用不会指向引用本身,而是指向该引用所对应的实际对象。因此通过修改array指向的数组,则arrayref指向的是同一个对象,因此运行效果如下。

<code>1,2,3,4,5,6</code>

2.2.2 变量的作用域

变量被定义的区域即为其作用域,全局变量具有全局作用域,局部变量,比如声明在函数内部的变量则具有局部作用域,在函数的外部是不能直接访问的。比如:

应该注意的是,在函数内var关键字是必须的,如果使用了变量而没有写var关键字,则默认的操作是对全局对象的,比如:

由于函数func中使用variable而没有关键字var,则默认是对全局对象variable属性做的操作(修改variable的值为in),因此此段代码会打印:

继续阅读