JavaScript入门教程

JavaScript简介
JavaScript语法基础
JavaScript流程控制
JavaScript函数
面向对象编程
JavaScript事件
JavaScript DOM
正则表达式
JavaScript BOM
AJAX

专题分析

浏览器兼容性
JS优化
Web前端开发规范
编辑器推荐
总结和笔记

学习助手

对象参考手册
ECMAScript分析
数据中心
QQ交流群

JS变量讲解

变量,即通过一个名字将一个值关联起来,以后通过变量就可以引用到该值,比如:
    var str = "Hello, World";
    var num = 2.345;
当我们下一次要引用”Hello, Wrold”这个串进行某项操作时,我们只需要使用变量 str 即可,同样,我们可以用 10*num 来表示 10*2.345。变量的作用就是将值“存储”在这个变量上。

基本类型和引用类型

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

基本类型和引用类型的区别是比较明显的,我们来看几个例子:
var x = 1;//数字x,基本类型
var y = x;//数字y,基本类型
print(x);
print(y);
x = 2;//修改x的值
print(x);//x的值变为2
print(y);//y 的值不会变化

运行结果如下:
1
1
2

这样的运行结果应该在你的意料之内,没有什么特别之处,我们再来看看引用类型的例子,由于数组的长度非固定,可以动态增删,因此数组为引用类型:
var array = [1,2,3,4,5];
var arrayRef = array;
array.push(6);
print(arrayRef);
引用指向的是地址,也就是说,引用不会指向引用本身,而是指向该引用所对应的实际对象。因此通过修改 array 指向的数组,则 arrayRef 指向的是同一个对象,因此运行效果如下:
1,2,3,4,5,6

变量的作用域

变量被定义的区域即为其作用域,全局变量具有全局作用域;局部变量,比如声明在函数内部的变量则具有局部作用域,在函数的外部是不能直接访问的。比如:
var variable = "out";
function func(){
    var variable = "in";
    print(variable);//打印”in”
}
func();
print(variable);//打印”out”

应该注意的是,在函数内 var 关键字是必须的,如果使用了变量而没有写 var 关键字,则默认的操作是对全局对象的,比如:
var variable = "out";
function func(){
    variable = "in";//注意此variable前没有var关键字
    print(variable);
}
func();
print(variable);//全局的变量 variable 被修改

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