js数据类型和常用数据处理

99 阅读2分钟

本文内容主要为 1.使用引用类型数据,常出现的错误及处理办法 2.开发中遇到的特定场景问题,解决办法

js中的8种数据类型:

nullundefinedbooleannumberstringsymbolobjectbigInt

symbol函数解决命名冲突: juejin.cn/post/702114…
BigInt大整数类型: juejin.cn/post/684490…

基本数据类型:

nullundefinedbooleannumberstringsymbol

引用类型

对象类型:objectfunctionArrayDateRegExp

两种数据类型的特点:
  • 基本数据类型: 值不可变,javascript中的原始值(undefined、null、布尔值、数字和字符串)是不可更改的
  • 引用数据类型:引用类型是可以直接改变其值的

引用类型带来的问题:

如下场景: 31703224658_.pic.jpg

我理解前端工作主要是拿数据做展示,数据源本身不应该被改动?;如以下场景

  • 对于传入组件的属性,不要直接修改;
  • 接口返回值,不符合自己要的结构,不要直接修改;

那现在要修改从原始数据中引用出的数据,要如何处理?

例如:图片上传的需求,对要上传的图片需要添加风控 + ocr识别的;

解决办法

解决办法就是打断变量之间的引用关系:通过深拷贝或者浅拷贝的方式来进行解决; 深拷贝:针对我们引用的数据只需要使用第一层,而不会去使用更深层的数据;

  • 通过自定义的deeepclone实现;
  • 引用lodash或者其他库中实现的deepClone
  • JSON.parse(JSON.stringify(arr)) 但有如下副作用 image.png

浅拷贝:

针对数组几种浅拷贝:

只有一层的数组,并且其值是简单类型的话:

  • 数组展开扩展运算符 ...
    image.png
  • concat

image.png

  • slice

image.png

复杂类型:

image.png

image.png

针对对象的浅拷贝
  • object.assign

image.png

  • 扩展运算符...

image.png

iunput 输入问题