博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
javascript关于forEach使用方式
阅读量:6137 次
发布时间:2019-06-21

本文共 757 字,大约阅读时间需要 2 分钟。

  hot3.png

之前一直都理解错了,以为forEach可以更改原数组里的数据,举个例子:

var a = [1,2,3,4,5];a.forEach(item =>{	item = item*2})console.log(a); // a = [1,2,3,4,5]var b = [{b:1},{b:2},{b:3}];b.forEach(item =>{	item.b = item.b*2})console.log(b) // b = [{b:2},{b:4},{b:6}]

明明是一样的函数执行结果没有达到自己需要的那样,为什么呢?今天不小心踩到了这个坑。

原因分析一下后也是很好理解的,因为a里的数据都是基本类型,而b里的数据是引用类型,基本类型在内存中的存在形式是散的,并没有地址,所以你虽然*2了但是你不知道是哪个*2了,如果说要a里的数据都*2的话,你需要这样写:

var a = [1,2,3,4,5];a.forEach((item,index,origin) =>{	origin[index] = item*2})console.log(a);

或者直接用map,接收返回的新数据。

下面来讨论一下数据类型:

数据类型主要分基本类型和引用类型,基本类型为,number,boolean,undefined,null.string,而引用类型有object,array,function,

在内存中基本类型是散的,而引用类型是类似门牌号一样,有一个地址整齐的排列着,如果想找到某个引用类型,直接找到对应的地址即可,引用类型的门打开后,里面又是一堆的基本类型,这个是我做前端这些年对数据类型的理解,望大佬门指点指点.

 

 

转载于:https://my.oschina.net/kaykie/blog/1862388

你可能感兴趣的文章
从无到有,WebService Apache Axis2初步实践
查看>>
任务调度(一)——jdk自带的Timer
查看>>
UIKit框架(15)PCH头文件
查看>>
整理看到的好的文档
查看>>
Linux磁盘管理和文件系统管理
查看>>
linux运维人员的成功面试总结案例分享
查看>>
Windows DHCP Server基于MAC地址过滤客户端请求实现IP地址的分配
查看>>
命令查询每个文件文件数
查看>>
《跟阿铭学Linux》第8章 文档的压缩与打包:课后习题与答案
查看>>
RAC表决磁盘管理和维护
查看>>
HDU 3622 Bomb Game(二分+2-SAT)
查看>>
Apache通过mod_php5支持PHP
查看>>
发布一个TCP 吞吐性能测试小工具
查看>>
java学习:jdbc连接示例
查看>>
PHP执行批量mysql语句
查看>>
Extjs4.1.x 框架搭建 采用Application动态按需加载MVC各模块
查看>>
Silverlight 如何手动打包xap
查看>>
建筑电气暖通给排水协作流程
查看>>
JavaScript面向对象编程深入分析(2)
查看>>
linux 编码转换
查看>>