JavaScript的变量问题

作者: 不乱于心_不困于情 | 来源:发表于2017-05-06 15:50 被阅读21次

关于变量的基本类型和引用类型

  • 基本类型包括 Undefined Null Boolean Number String.
    这五种基本数据类型是按值访问的,
    因为可以操作保存在变量中的实际值.

  • 引用类型指的是由多个值构成的对象,
    引用类型的值是直接保存在内存中的,
    JavaScript是不允许直接访问,
    也就是说不能直接操作对象中的内存空间.
    那么在实际中操作对象操作的是引用!


1. 基本类型

var num1 = 5; var num2 =num1;

num1中保存的是的值是5,
第二句中用num1来初始化 num2的值
num2中的值也是5,但是两个变量是相互独立的.

2. 引用类型

var obj1 = new Object (); var obj2 = obj1; obj1.name = "zhangsan"; alert(obj2.name); // zhangsan

首先obj1 保存了一个新的对象.
然后这个对象复制给obj2,
那么obj1和obj2都指向同一个对象.
当为obj1添加name属性后那么obj2也可以访问name属性


来看下面这两个例子:

var personA = { name = "wz", age = 18, }; var personB = personA; person.age = 19; console.log(personB.age);


var personA = { name = "wz", age = 18, }; var personB = personA.age; person.age = 19; console.log(personB.name);




第一段代码 :
首先定义了一个变量personA指向一个对象
里面有两个属性分别是name和age,
name和age都是基本变量,
接下来把personA赋值给personB,
实际上是personA和personB指向同一个对象,
然后将19赋值给对象的age属性.
改变了对象属性的值,所以输出是19;


第二段代码所不同的是将对象的age属性的值赋给personB,
这里的personB不再是指向对象的,它是一个具体的值,
所以这里的输出是18!

相关文章

网友评论

    本文标题:JavaScript的变量问题

    本文链接:https://www.haomeiwen.com/subject/tidbzttx.html