javascript中的数据类型

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

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://segmentfault.com/a/1190000013591549
    本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系博主进行删除。
点赞