IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> JavaScript知识库 -> JavaScript面试题 更新中...... -> 正文阅读

[JavaScript知识库]JavaScript面试题 更新中......

JavaScript面试题

1. JavaScript有哪些数据类型,它们的区别?

JavaScript共有?种数据类型,分别是 Undefined、Null、Boolean、Number、String、 Object、Symbol、BigInt。

其中 Symbol 和 BigInt 是ES6 中新增的数据类型:

  • Symbol 代表创建后独一无二且不可变的数据类型,它主要是为了解决可能出现的全局变量冲突的问 题。
  • BigInt 是?种数字类型的数据,它可以表示任意精度格式的整数,使? BigInt 可以安全地存储 和操作?整数,即使这个数已经超出了 Number 能够表示的安全整数范围。

这些数据可以分为原始数据类型和引?数据类型:

  • 这些数据可以分为原始数据类型和引?数据类型:
  • 堆:引?数据类型(对象、数组和函数)

两种类型的区别在于存储位置的不同:

  • 原始数据类型直接存储在栈(stack)中的简单数据段,占据空间?、??固定,属于被频繁使?数 据,所以放?栈中存储;
  • 引?数据类型存储在堆(heap)中的对象,占据空间?、??不固定。如果存储在栈中,将会影响 程序运?的性能;引?数据类型在栈中存储了指针,该指针指向堆中该实体的起始地址。当解释器寻 找引?值时,会?先检索其在栈中的地址,取得地址后从堆中获得实体。

堆和栈的概念存在于数据结构和操作系统内存中,在数据结构中:

  • 在数据结构中,栈中数据的存取?式为先进后出。
  • 堆是?个优先队列,是按优先级来进?排序的,优先级可以按照??来规定。

在操作系统中,内存被分为栈区和堆区:

  • 栈区内存由编译器?动分配释放,存放函数的参数值,局部变量的值等。其操作?式类似于数据结构 中的栈。
  • 堆区内存?般由开发着分配释放,若开发者不释放,程序结束时可能由垃圾回收机制回收。

2. 数据类型检测的?式有哪些

  1. typeof
  2. instanceof
  3. constructor
  4. Object.property.toString.call([obj])
    这四种方式在我博客都有写过。# JavaScript的数据类型检测 有几种方式?

3. 判断数组的?式有哪些

  1. Object.property.toString.call([obj])
  2. 可以通过原型链来判断(Object.getPrototypeOf(obj) === Array.property)
  3. 可以通过instanceof来判断
  4. ES6数组新增方法 Array.isArray(obj)
  5. Array.prototype.isPrototype(obj) / Object.prototype.isPrototypeOf.call(Array.prototype, arr)
    const arr = []
    // 1. toString.call
    console.log(Object.prototype.toString.call(arr).slice(8,-1) === "Array")
    // 2. 通过原型判断
    console.log(Object.getPrototypeOf(arr) === Array.prototype)
    // 3. instanceof
    console.log(arr instanceof Array)
    // 4. Array.isArray()
    console.log(Array.isArray(arr))
    // 5. isPrototype 在Object原型上的 通过Object原型或者Array原型都可以拿到的
    console.log(Object.prototype.isPrototypeOf.call(Array.prototype, arr))
    console.log(Array.prototype.isPrototypeOf(arr))

4. null和undefined区别

首先 Undefined 和 Null 都是基本数据类型,这两个基本数据类型分别都只有?个值,就是 undefined 和 null。

undefined 代表的含义是未定义,null 代表的含义是空对象。?般变量声明了但还没有定义的时候会 返回 undefined,null主要?于赋值给?些可能会返回对象的变量,作为初始化。

undefined 在 JavaScript 中不是?个保留字,这意味着可以使? undefined 来作为?个变量名,但是这样的做法是?常危险的,它会影响对 undefined 值的判断。我们可以通过?些方法获得安 全的 undefined 值,?如说 void 0

当对这两种类型使? typeof 进?判断时,Null 类型化会返回 “object”,这是?个历史遗留的问 题。当使?双等号对两种类型的值进??较时会返回 true,使?三个等号时会返回 false。

5. typeof null 的结果是什么,为什么?

typeof null 的结果是Object。

在 JavaScript 第?个版本中,所有值都存储在 32 位的单元中,每个单元包含?个?的 类型标签 (1-3 bits) 以及当前要存储值的真实数据。类型标签存储在每个单元的低位中,共有五种数据类型:

000: object - 当前存储的数据指向?个对象。 
  1: int - 当前存储的数据是?个 31 位的有符号整数。 
010: double - 当前存储的数据指向?个双精度的浮点数。 
100: string - 当前存储的数据指向?个字符串。 
110: boolean - 当前存储的数据是布尔值。

如果最低位是 1,则类型标签标志位的?度只有?位;如果最低位是 0,则类型标签标志位的?度占三 位,为存储其他四种数据类型提供了额外两个 bit 的?度。

有两种特殊数据类型:

  • undefined的值是 (-2)30(?个超出整数范围的数字);
  • null 的值是机器码 NULL 指针(null 指针的值全是 0)
    那也就是说null的类型标签也是000,和Object的类型标签?样,所以会被判定为Object。
  JavaScript知识库 最新文章
ES6的相关知识点
react 函数式组件 & react其他一些总结
Vue基础超详细
前端JS也可以连点成线(Vue中运用 AntVG6)
Vue事件处理的基本使用
Vue后台项目的记录 (一)
前后端分离vue跨域,devServer配置proxy代理
TypeScript
初识vuex
vue项目安装包指令收集
上一篇文章      下一篇文章      查看所有文章
加:2022-06-20 22:57:21  更:2022-06-20 22:59:33 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/23 17:11:21-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码