今天在图书馆看到《JavaScript核心技术开发解密》这本书,里面讲了js的基础核心知识,拿来回顾一下,加深对基础知识的理解,感觉还不错,值得推荐,下面是随手记录一下知识点总结。
基础数据类型与引用数据类型发生复制行为后的不同结果
- 看下面两个demo
//demo01.js
var a = 20;
var b = a;
b = 30;
//这时a的值是多少
//demo02.js
var m = { a: 10 , b: 20}
var n = m;
n.a = 15;
//这时m.a的值是多少
上面两个例子中,基础数据类型和引用数据类型都发生了一次复制行为。
- 当变量对象中的数据类型发生复制行为时,新的变量会被分配到一个新的值。在demo01中,通过 var b = a 发生复制之后,虽然 a 与 b 的值都等于20,但他们其实已经是相互独立互不影响的值了。因此我们修改了 b 的值后,a 的值不会发生变化。
- 在demo02中,通过 var n = m 发生了一次复制行为。引用类型的复制同样会为新的变量自动分配一个新的值并保存在变量对象中。但不同的是,这个新的值,仅仅是引用类型的一个地址指针。当地址指针相同时,尽管他们相互独立,但它们指向的具体对象实际上是同一个。因此,当修改 n 时, m 也会发生变化,这就是引用类型的特性。
上面的例子是非常简单的,但这也是js中的基础核心知识,必须要有深刻的理解,这本书中主要讲的都是js的核心知识,例如:内存空间、变量对象、作用域、闭包、this、面向对象等,学习前端的同学们,可以看一下,加深一下对js基础的理解。