对象数据与基本数据

在《JavaScript入门经典(第4版)》第5章中介绍对象的时候曾经这么说过:

在基本数据类型中,储存的是基本数据本身;而在对象数据类型中,储存的是指向保存数据的内存地址的引用。

   这二者之间到底有何区别?一个小小的代码就能看出来:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<body>
    <script type="text/javascript">
        var str1 = new String("hello");
        var str2 = new String("hello");
        var str3 = str2;
        document.write("str1 == str3 ??  " + (str1 == str3));
        document.write("<br />");

        var str4 = "hello";
        var str5 = "hello";
        var str6 = str5;
        document.write("str4 == str6??  " + (str4 == str6));
    </script>
</body>
</html>

在浏览器中显示上面代码所写页面,得到的结果是:

str1 == str3 ?? false
str4 == str6 ?? true

原因:

str1和str2中声明了两个String类型,这两个类型虽然内容相同(“hello”),但很明显是储存在内存中不同位置的。这时再声明str3 = str2,也只是把str2的内存引用赋给了str3。str3的内存引用 == str2的内存引用 <> str1的内存引用,所以str3 == str1的逻辑语句结果为false。

而str4和str5是两个基本数据类型,都存的是数据本身(“hello”),所以把str5赋给str6之后,str4的数据 == str5的数据 == str6的数据,因此str4 == str6的逻辑语句结果为true。

Wilton P, McPeak J, 张敏, 等. JavaScript 入门经典[M]. 清华大学出版社, 2011.

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值