ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

JS数据类型相关面试题

2022-06-15 23:33:27  阅读:119  来源: 互联网

标签:面试题 undefined 指向 数据类型 JS 引用 null 函数


1、JS 有哪些数据类型,如何判断这些数据类型

6种基本数据类型:String, Number ,Boolean, undefined, null, Symbol

1种引用类型:Object对象:Array(数组),Function(函数),Data(时间)

检测数据类型的4种方式

  • typeof
  • instanceof
  • constructor
  • Object.prototype.toString.call()

2、typeof返回的数据类型

typeof返回值类型为字符串类型

typeof判断基本数据类型时,除了null输出结果为object,其他类型都能正确判断

typeof 判断引用数据类型时,除了判断函数会输出'function' 其它都输出'object'

注意点:

null 的数据类型是 object (null 是对一个空对象的引用,是一个占位符)

  • typeof 并不能区分引用数据类型(Array 数组、Date 时间)等
  • 所以我们可以使用 instanceof 来判断引用数据类型

3、null 和 undefined 的区别 ?

  • undefined(未定义):当一个变量被定义(声明)但并没有赋值时,他的初始值就是 undefined。
  • null(空):表示对一个空对象的引用。
    • 当一个变量定好之后,未来是用来保存对象的引用时,我们可以给他赋初始值为 null。
    • 当一个对象使用完,需要对其进行释放内存时,可以将其值设置 null (js 会自动垃圾回收)

相同点

  • undefined 和 null 都是基本数据类型,保存栈中。
  • undefined 和 null 转换为 boolean 布尔值都为 false

不同点:

两者转换为数字类型时,其值不一样

Number(undefined); //NaN
Number(null); //0

特殊点:

undefined == null; //true

4、返回false的情况有哪些

0  ""   null  false  NaN  undefined  不成立的表达式

5、对this的理解

答: this是个关键字,它的指向和函数的调用方式有关

  1. 函数调用模式, this指向window
  2. 构造函数调用模式, this指向新创建的实例对象
  3. 方法调用模式, this指向调用方法的对象
  4. 上下文调用模式, call和apply方法中, this指向方法内的第一个参数;bind方法中, bind创建的新函数的this绑定为bind方法中新的函数
  5. 在事件处理函数中,this指向触发事件的当前元素
  6. 定时器中,this指向window
  7. 箭头函数中没有this指向问题,它的this和外层作用域的this保持一致
  8. 匿名函数中的this总是指向window

6、对闭包的理解,以及优缺点

答: 闭包就是能够读取其他函数内部变量的函数,一个函数A return其内部的函数B,被return出去的B函数,能够在外部访问A函数内部的变量,

闭包的优点:1、形成私有空间,避免全局变量的污染
2、持久化内存,保存数据
闭包的缺点:1、持久化内存,导致内存泄露
解决:1、尽快避免函数的嵌套,以及变量的引用
2、执行完的变量,可以赋值null,让垃圾回收机制,进行回收释放内存(当不在引用的变量、对象,垃圾回收机制就会回收)
垃圾回收机制:常见的浏览器垃圾回收算法: 引用计数 和 标记清除法
1)引用计数:如果没有任何变量指向它了,说明该对象已经不再需要了。缺点:循环引用
2)标记清除法:在JS中就是全局出发定时扫描内存中的对象,无法触及的对象,就会背回收。

标签:面试题,undefined,指向,数据类型,JS,引用,null,函数
来源: https://www.cnblogs.com/Eamon-18/p/16380321.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有