js-数据类型

102 阅读2分钟

有bug我不说,测试提了再改!大家好,我是以一己之力养活全公司测试的狗前端---曹八哥

0151D663.jpg

1.JS数据类型有哪些?(8种)

1.1 基本数据类型(7种)

基本数据类型包括:

stringnumberbooleansymbol (ES6)undefinednullbigint (ES10)

1.png

null类型为啥是object

null是一个简单的原始值,表示期望此处引用一个对象,常用来表示“空值”, 这是历史遗留问题,最开始null是作为object类型空指针的特殊情况,所以 typeof null 类型是object。在ECMA6中, 曾经有提案为历史平反, 将type null的值纠正为null, 但最后提案被拒了. 理由是历史遗留代码太多, 不想得罪人, 不如继续将错就错当和事佬

1.2 引用数据类型(1种)

object (包括但不限于JS的那些内置对象,常见的有基本类型的包装类:StringNumberBooleanMathDateRegExp等)

2.png

3.png

:什么是Global对象?

Global对象是JS内置对象之一,意为全局对象,这个对象很特别,它不像其它对象由类或者构造函数实例化而来,它没有类和构造函数,无法new 一个新的Global对象 ,自己就是祖宗。在一个程序中有且只有一个全局对象,真实的全局对象是不可以被直接访问的,通过关键字可以引用全局对象,被引用的是全局对象的代理(如thiswindow等)

2. 不同 JavaScript 环境中怎么获取全局对象Global?

  • g: 含各内置对象、本地对象、BOMDOM
  • g1: 含部分内置对象、部分本地对象、一些自定义对象、少量BOM、极少DOM
  • g2: 含各内置对象、无window、无DOM、极少极少BOM
  • /: 输出:not defined
关键字\环境IE浏览器正常浏览器node小程序
thisgg全局this: module.exports对象函数this: global对象g2
selfgg/g2
windowgg/g2
global//g1非全局对象的对象
globalThis/gg1/
topgg/g2
parentgg/g2
framesgg//

4.png

3 基本数据类型与引用类型的区别?

  1. 基本数据类型就是简单的数据段,引用数据类型是指由多个值构成的对象
  2. 基本数据类型数据存在栈内存中,而引用类型数据存在堆内存中,初始栈中只是存入了指向该数据的引用地址,无法直接访问,需要调用栈中的内存地址去访问。 栈内存由操作系统操作和释放,存取速度快;而堆内存需手动申请和释放,常用new关键字来分配,存取速度相对较慢

5.png

6.png