Js温习(1) -基本数据类型

126 阅读2分钟

##数据类型分类

  • 基本数据类型:string,boolean, number,Symbol,undefined, null
  • 引用数据类型:object
  • 基本数据类型中undefined,null为特殊
  • 内置对象:Date,Array,Math,Number,Boolean,String,Regexp,function... ##数据类型访问与复制
  • 基本数据类型值保存在栈内存中的简单数据段;访问方式是按值访问
  • 引用数据类型保存在堆内存中的对象。(变量中保存的是一个内存指针,这个指针指向内存中另一个位置,这个位置存放对象)访问方式是按引用访问。操作时,按照指针读取内存,然后再对该内存中的值进行操作。
  • 重点:引用值的复制,是复制指针,所以为了防止污染,采用深拷贝可以 JSON.parse(JSON.stringify(objects)) ##堆、栈
  • 二者都是存放临时数据的地方
  • 栈,先进后出(桶)
  • 堆,程序运行时,而不是程序编译是,申请某个大小的内存空间(动态分配内存),随意增删属性,无次序;
  • 栈区(stack),由编辑器自动分配释放,存放函数的参数值和局部变量;
  • 堆区(heap),一般由程序员分配释放,不主动释放,由垃圾回收机制处理;
  • 堆(数据结构),一棵树,堆排序;
  • 栈(数据结构),先进后出的数据结构; ##数据类型检测
  • 基本数据类型判断利器(typeof)
  • 引用数据类型检测(instanceof),原理:查看B对象的prototype执行的对象是否在对象A的[[prototype]]链上,当B为null时,会报错(空指针)
  • Constructor 判断自定义类型(不适应null和undefined)
{name: 'jazz'}.constructor == Object // true
  • 推荐使用:Object.prototype.toString.call(obj) ##数据类型转换
  • 隐式转换 1:undefined 和 null 相等,但不恒等 2.number 和 string 对比时,会尝试将string转换成number; **
  • 显示转换 Number(),String(),Boolean()三个方法