javascript中的数据类型

整理以及总结一下,回溯下基础。javascript

ECMAScript中具备两种数据类型的值,分别是 基本类型值和引用类型值。java

在ECMAScript中,基本类型值指的是简单的数据段,引用类型值指那些可能由多个值构成的对象。es6

基本数据类型

基本数据类型:undefined(未定义的值的默认值) null(还没有存在的对象) boolean(true or false) number(数字) string(字符串)。
基本类型的值不能添加属性。数组

var str = 'I am basic';
str.type='basic';//it is wrong!!!

这五种数据类型是按值访问的,也就是操做的是保存在变量中实际的值,改变了就是改变了。
引用类型:这种类型就是在操做的时候,操做的是其自身的引用,而不是实际的对象。固然这一块还要再细化一点,当操做动做是复制时,操做的是对象的引用。当操做动做是添加时,操做的是实际的对象函数

下面说说一些操做以及开发中的注意点工具

基本操做

基本类型:就是复制,copy,你会获得两个如出一辙的东西,而且这两个之间是相互独立的post

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,这里通常用一些方法避免掉。code

  • 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;

    是的,这样也能够的。。。

这样开发中能够根据须要复制的数据来选择相对简单方便的方法。

小结

很是基础的知识点了,可是开发中不注意也会引发没必要要的麻烦,同时在平常开发中能够针对不一样的需求提早写好工具函数,统一块儿来。方法多不必定是好事,群魔乱舞。

相关文章
相关标签/搜索