JSP中引用数据类型的不同

本文深入探讨JavaScript中的六种基本数据类型,包括string、boolean、number、undefined、null及object,并解析typeof操作符的使用。同时,文章详细阐述了值类型与引用类型在内存中的存储方式,以及它们在栈内存和堆内存中的区别。通过具体示例,讲解变量比较的原理和引用类型赋值的特性。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

// JS中的数据类型一共就6种 
        // string boolean number undefined null object 
        // typeof null  => 'object'
        // typeof function() {} => 'function'
        // 请写一个函数判定一个变量保存的数据是什么类型?
        // function check(variable) {
        //     if (variable === null) {
        //         console.log("您所传递的变量类型是null");
        //         return;
        //     }
        //     if (typeof variable === "function") {
        //         console.log("您所传递的变量类型是object");
        //         return;
        //     }
        //     console.log("您所传递的变量的类型是" + typeof variable);
        // }

        // check(1);
        // check("str");
        // check(undefined);
        // check(true);
        // check(null);
        // check({});
        // check([]);
        // check(function() {});



        // 引用类型与值类型最大的不同在于内存中的位置
        // 内存: 分为堆内存和栈内存
        // 所有的变量 存储在 栈内存中  值类型的数据也是存储在栈内存中 引用类型的数据是存储在堆内存中
        // 变量的比较: 如果两个变量存储的是值类型数据 则比较值
        var a = 10; 
        var b = 10;
        console.log(a == b) // true


        // 以下代码 
        // 开辟一个内存空间 将这个对象存放进去 并返回一个地址 地址给了obj这个变量
        // var obj = {}; // xxff00
        // 开辟一个内存空间 将这个对象存放进去 并返回一个地址 地址给了obj这个变量
        // var obj1 = {}; // xxff01
        // 以上两条代码在内存中开辟了两个不同的地址 
        // 如果判定 obj === obj1 其实是在判定两个变量保存的地址是否是同一个地址
        // console.log(obj == obj1); // false


        // 引用类型的赋值
        // var obj = {};
        // var obj1 = obj;
        // 第一条代码 开辟一个内存空间 将这个对象存放进去 并返回一个地址 地址给了obj这个变量
        // 第二条代码 把obj所保存的那个地址 给了obj1 
        // 此时 根据obj可以找到这个对象 根据obj1也可以找到这个对象
        // 通过obj1给添加的属性 
        // obj1.name = "随便什么都可以";
        // 输出obj 结果是受到了影响
        // console.log(obj);
        // 说明 obj和obj1的地址是同一个

        // (重要)
        // = 和 打点的不同
        // var obj = {};
        // obj.name = "123"; // 这条代码的性质 给这个对象添加属性
        // obj = ""; // 这条代码的性质 把对象的地址丢弃 并重新保存了123

        // = 和 打点的不同
        // var obj = {};
        // var obj1 = obj;
        // // 打点
        // obj.name = 123; // 请问 obj1受不受影响 
        // obj = ""; // 请问当输出obj1的时候 obj1是什么 
        // 结论: 对一个保存着引用地址的变量 使用点语法 是在给引用地址添加属性 
        // 对一个保存着引用地址的变量使用等号 直接把变量保存的地址丢弃 赋值为新内容 

        // 出题
        // var a = function() {
        // }
        // var b = function() {
        // }
        // 结果: a的地址与b的地址不同 分别是两个函数
        
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值