摘要:中具有两种数据类型的值,分别是基本类型值和引用类型值。在中,基本类型值指的是简单的数据段,引用类型值指那些可能由多个值构成的对象。基本数据类型基本数据类型未定义的值的默认值尚未存在的对象数字字符串。
整理以及总结一下,回溯下基础。
ECMAScript中具有两种数据类型的值,分别是 基本类型值和引用类型值。
在ECMAScript中,基本类型值指的是简单的数据段,引用类型值指那些可能由多个值构成的对象。
基本数据类型基本数据类型:undefined(未定义的值的默认值) null(尚未存在的对象) boolean(true or false) number(数字) string(字符串)。
基本类型的值不能添加属性。
var str = "I am basic"; str.type="basic";//it is wrong!!!
这五种数据类型是按值访问的,也就是操作的是保存在变量中实际的值,改变了就是改变了。
引用类型:这种类型就是在操作的时候,操作的是其自身的引用,而不是实际的对象。当然这一块还要再细化一点,当操作动作是复制时,操作的是对象的引用。当操作动作是添加时,操作的是实际的对象。
下面说说一些操作以及开发中的注意点
基本操作基本类型:就是复制,copy,你会得到两个一模一样的东西,并且这两个之间是相互独立的
var a = 111; var b = a; a+=10; console.log(a);//121 console.log(b);//111
引用类型:引用类型在接受到复制操作这个命令时,也是会把变量对象中的值复制一份放到一个新的空间中。但是,这个值并不是真正的值,而是一个指针或者说是路径,它指向了存储在堆中的一个对象。复制之后的这两个变量只是两个指针,指向同一个地方。
这样的话,改变一个,另一个也得变化。
var a ={}; var b=a; a.age=18; console.log(b.age);//18拷贝操作
所以在日常开发中,经常会用到对象的赋值操作,这里直接用‘=’可能会引起不必要的一些bug,这里一般用一些方法避免掉。
for循环,键值对应赋值,数据对象都可以,这里要注意一个深浅拷贝,深拷贝要对当前对象的所有的属性进行遍历赋值
深入剖析 JavaScript 的深复制
arrB=arrA.slice(0)
js的数组操作方法 slice会返回一个新的数组,接受两个参数(start,end),如果没有传end,默认为从start到数组尾部.
arrB=arrA.concat()
js的数组操作方法,同样返回一个新数组。
var arrA=[1,2,3]; var [...arrB]=arrA; console.log(arrB)//[1,2,3]
这里用上了es6的扩展运算符,原理就是先拆掉再放进数组里。
var objB=JSON.parse(JSON.stringify(objA))
拷贝一个字符串(基本类型)会新开辟出一个存储地址,这样就没有之前的引用了。
var objA={"name":"11","age":"22"} var {...objB}=objA;
是的,这样也可以的。。。
这样开发中可以根据需要复制的数据来选择相对简单方便的方法。
小结非常基础的知识点了,但是开发中不注意也会引起不必要的麻烦,同时在日常开发中可以针对不同的需求提前写好工具函数,统一起来。方法多不一定是好事,群魔乱舞。
文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。
转载请注明本文地址:https://www.ucloud.cn/yun/93252.html
摘要:前缀规范每个局部变量都需要有一个类型前缀,按照类型可以分为表示字符串。例如,表示以上未涉及到的其他对象,例如,表示全局变量,例如,是一种区分大小写的语言。布尔值与字符串相加将布尔值强制转换为字符串。 基本概念 javascript是一门解释型的语言,浏览器充当解释器。js执行时,在同一个作用域内是先解释再执行。解释的时候会编译function和var这两个关键词定义的变量,编译完成后从...
摘要:设计模式是以面向对象编程为基础的,的面向对象编程和传统的的面向对象编程有些差别,这让我一开始接触的时候感到十分痛苦,但是这只能靠自己慢慢积累慢慢思考。想继续了解设计模式必须要先搞懂面向对象编程,否则只会让你自己更痛苦。 JavaScript 中的构造函数 学习总结。知识只有分享才有存在的意义。 是时候替换你的 for 循环大法了~ 《小分享》JavaScript中数组的那些迭代方法~ ...
摘要:被识别为结束符。变量时被认为时有名字的容器。常量一旦被声明初始化,值并不能被改变。字符串可以看成右字符组成的数组,可能被误认为可变的。表达式没有显示的返回任何内容。 Java script 简介 Javascript 是一门跨平台,面向对象的轻量级脚本语言,运行于Javascript解释权/引擎 avascript内置了一个包含一系列对象的标准库,比如数组,日期,数字和一个语言元素合...
摘要:中有种基本数据类型和。在介绍的基本数据类型前,有必要提到两个关键字和。由于中的变量是松散类型的,所以它提供了一种检测当前变量的数据类型的方法,也就是关键字。输出的结果为用于表示由零数字或字符组成的字符序列,即字符串。 如果你是一名IT前端人员,怎么会不懂JavaScript的美?如果你是一名前端在学人员,接触JavaScript后,怎么会不明白JavaScript中基本数据类型?大家都...
摘要:以和为例,说明中的数字数据如何转换为二进制数据。对象用来表示通用的固定长度的原始二进制数据缓冲区。中的数字数据如何转换为二进制数据对和有了一个大概的了解,下面让我们来看下它是如何进行二进制数据操作的。 概述 本文主要通过对JavaScript中数字数据与二进制数据之间的转换,让读者能够了解在JavaScript中如何对数字类型(包括但不限于Number类型)进行处理。 二进制数据在日常...
摘要:基于对象字面量,但是独立于任何编程语言,真正重要的是表示法本身,所以在学习之前不必先学习。键必须是字符串,值可以是合法的数据类型字符串数字对象数组布尔值或。布尔类型中的布尔值仅可使用小写形式或,其他任何写法都会报错。 什么是JSON JSON全称是Javascript Object Notation(对象表示法),是一种在不同平台间传递数据的文本格式(数据交换格式)。常见的数据交换格式...
阅读 2769·2021-11-17 09:33
阅读 3091·2021-10-25 09:44
阅读 1199·2021-10-11 10:59
阅读 2395·2021-09-27 13:34
阅读 2904·2021-09-07 10:19
阅读 2132·2019-08-29 18:46
阅读 1534·2019-08-29 12:55
阅读 927·2019-08-23 17:11