有bug我不说,测试提了再改!大家好,我是以一己之力养活全公司测试的狗前端---曹八哥
1.JS数据类型有哪些?(8种)
1.1 基本数据类型(7种)
基本数据类型包括:
string、 number、 boolean、 symbol (ES6) 、undefined、 null、bigint (ES10)
问:null类型为啥是object?
答:null是一个简单的原始值,表示期望此处引用一个对象,常用来表示“空值”, 这是历史遗留问题,最开始null是作为object类型空指针的特殊情况,所以 typeof null 类型是object。在ECMA6中, 曾经有提案为历史平反, 将type null的值纠正为null, 但最后提案被拒了. 理由是历史遗留代码太多, 不想得罪人, 不如继续将错就错当和事佬
1.2 引用数据类型(1种)
object (包括但不限于JS的那些内置对象,常见的有基本类型的包装类:String、Number、Boolean 和 Math、Date、RegExp等)
问:什么是Global对象?
答:Global对象是JS内置对象之一,意为全局对象,这个对象很特别,它不像其它对象由类或者构造函数实例化而来,它没有类和构造函数,无法new 一个新的Global对象 ,自己就是祖宗。在一个程序中有且只有一个全局对象,真实的全局对象是不可以被直接访问的,通过关键字可以引用全局对象,被引用的是全局对象的代理(如this、window等)
2. 不同 JavaScript 环境中怎么获取全局对象Global?
- g: 含各内置对象、本地对象、BOM、DOM
- g1: 含部分内置对象、部分本地对象、一些自定义对象、少量BOM、极少DOM
- g2: 含各内置对象、无window、无DOM、极少极少BOM
- /: 输出:not defined
| 关键字\环境 | IE浏览器 | 正常浏览器 | node | 小程序 |
|---|---|---|---|---|
| this | g | g | 全局this: module.exports对象函数this: global对象 | g2 |
| self | g | g | / | g2 |
| window | g | g | / | g2 |
| global | / | / | g1 | 非全局对象的对象 |
| globalThis | / | g | g1 | / |
| top | g | g | / | g2 |
| parent | g | g | / | g2 |
| frames | g | g | / | / |
3 基本数据类型与引用类型的区别?
- 基本数据类型就是简单的数据段,引用数据类型是指由多个值构成的对象
- 基本数据类型数据存在栈内存中,而引用类型数据存在堆内存中,初始栈中只是存入了指向该数据的引用地址,无法直接访问,需要调用栈中的内存地址去访问。 栈内存由操作系统操作和释放,存取速度快;而堆内存需手动申请和释放,常用new关键字来分配,存取速度相对较慢