美文网首页
JavaScript学习总结(1) —— 内置类型

JavaScript学习总结(1) —— 内置类型

作者: Frio_ | 来源:发表于2019-10-22 10:39 被阅读0次

1. 内置类型

JS 中分为七种内置类型,七种内置类型又分为两大类型:基本类型和对象(Object)。

基本类型有六种:null,undefined,boolean,number,string,symbol

其中 JS 的数字类型是浮点类型的,没有整型。并且浮点类型基于 IEEE 754 标准
实现,在使用中会遇到某些 Bug。NaN 也属于 number 类型,并且 NaN 不等于自身。
对于基本类型来说,如果使用字面量的方式,那么这个变量只是个字面量,只有在
必要的时候才会转换为对应的类型

let a = 111 // 这只是字面量,不是 number 类型
a.toString() // 使用时候才会转换为对象类型
对象(Object)是引用类型,在使用过程中会遇到浅拷贝和深拷贝的问题。


1.1 浅拷贝和深拷贝问题

如何区分深拷贝与浅拷贝,简单点来说,就是假设B复制了A,当修改A时,看B是否会发生变化,如果B也跟着变了,说明这是浅拷贝,拿人手短,如果B没变,那就是深拷贝,自食其力。

浅拷贝例子:

let a=[0,1,2,3,4],
    b=a;
console.log(a===b);
a[0]=1;
console.log(a,b);
输出结果

会发现b会随着a变化,是因为当b=a进行拷贝时,其实复制的是a的引用地址,而并非堆里面的值。而当我们a[0]=1时进行数组修改时,由于a与b指向的是同一个地址,所以自然b也受了影响,这就是所谓的浅拷贝了。


浅拷贝

要实现深拷贝的话,就需要递归去复制所有层级属性。
这么我们封装一个深拷贝的函数(PS:只是一个基本实现的展示,并非最佳实践)

function deepClone(obj){
    let objClone = Array.isArray(obj)?[]:{};
    if(obj && typeof obj==="object"){
        for(key in obj){
            if(obj.hasOwnProperty(key)){
                //判断ojb子元素是否为对象,如果是,递归复制
                if(obj[key]&&typeof obj[key] ==="object"){
                    objClone[key] = deepClone(obj[key]);
                }else{
                    //如果不是,简单复制
                    objClone[key] = obj[key];
                }
            }
        }
    }
    return objClone;
}    
let a=[1,2,3,4],
    b=deepClone(a);
a[0]=2;
console.log(a,b);

相关文章

  • JavaScript学习总结(1) —— 内置类型

    1. 内置类型 JS 中分为七种内置类型,七种内置类型又分为两大类型:基本类型和对象(Object)。基本类型有六...

  • 2020-12-22

    进阶篇 一、javascript 1、内置类型 ·js中分为7种内置类型,7种又分为两大类型:基本类型和对象 ·基...

  • 谈谈JS类型

    内置类型 JavaScript 有七种内置类型: • 空值(null) • 未定义(undefined) • 布尔...

  • JS Note_1

    内置类型 JavaScript 有七种内置类型:• 空值(null) • 未定义(undefine...

  • JavaScript语言类型

    内置类型 JavaScript有七种内置类型(包含ES6的symbol): null undefined stri...

  • JavaSctipt 语言类型和类型检测

    内置类型 JavaScript目前有八种内置类型(包含ES6的symbol): null undefined st...

  • JavaScript基础总结

    1.JavaScript简介 JavaScript一种直译式脚本语言,是一种动态类型、弱类型、基于原型的语言,内置...

  • JavaScript类型判断的四种方法

    JavaScript数据类型 JavaScript有八种内置类型,除对象外,其他统称为“基本类型”。 空值(nul...

  • javascript语言的应用

    JavaScript技术: JavaScript语言:变量,数据类型,流程控制,函数,内置对象(strin,arr...

  • cocos creator程序员笔试题

    Javascript部分 Javascript有哪些数据类型? 举例两个最常见的内置对象数据类型。【答案】Numb...

网友评论

      本文标题:JavaScript学习总结(1) —— 内置类型

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