javascript变量与对象

来源:互联网 发布:怎么把程序烧进单片机 编辑:程序博客网 时间:2024/05/08 15:05

一、声明变量:

js声明变量的方式类似于java,但是js声明遍历不需要指定变量类型,这就是js的强大之处,他对数据类型处理起来很随意,也很方便。

例如:var a = 0; 这个a变量就是数值型的,var a = '0'; 这个a变量就是字符型的。

如果只声明变量,但是没有赋值如:var a; 那么a变量就是undefined类型的,输出结果也为'undefined'。

对于变量的重复声明并不会改变变量的值,如:var a = 123; var a ; print(a);结果还是123。

二、对象的引用:

我们看一下这个例子:

var a = {x:1,y:2};

var b=a;

b.x++;

print(a.x);

print(b.x);

输出结果:2 

输出结果:2 

为什么会这样呢,我只改了b为什么a也变了呢?其实程序是将{x:1,y:2}作为一个对象,var a = {x:1,y:2};是将对象的引用赋值给变量a,var b=a;是将变量a的值(对象的应用)赋值给b。这事a,b都指向{x:1,y:2}对象。b.x++也就是{x:1,y:2}中的x++。a,b指向同一个对象,所以出现了这样的输出结果。

解释:变量值没有变化(a,b存的都是变量的引用,可以理解为指向同一个内存地址),只是引用的对象值变了。

如果是直接赋值呢?

如:

var a = 1000;

var  b = a;

b++;

print(a);

print(b);

输出结果:1000

输出结果:1001

大家可以看到如果不是对象的引用,不会出现上面描述的那种情况,也就没有指向同一个对象的说法了。

大家思考:

function swapab(a,b){

var temp = a;

a=b;

b=temp;

}

var one = 1;

var two = 2;

swapab(one,two);//此处是对象的引用吗?

print(one,two);

输出结果是什么?

0 0
原创粉丝点击