JS数据类型相关面试题

JS面试题

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

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

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

检测数据类型的4种方式

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

typeof返回的数据类型

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

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

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

注意点:

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

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

null 和 undefined 的区别 ?

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

相同点

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

不同点:

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

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

特殊点:

undefined == null; //true

返回false的情况有哪些

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

对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

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

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

闭包的优点:

1、形成私有空间,避免全局变量的污染

2、持久化内存,保存数据
闭包的缺点:

1、持久化内存,导致内存泄露

解决:

1、尽快避免函数的嵌套,以及变量的引用

2、执行完的变量,可以赋值null,让垃圾回收机制,进行回收释放内存(当不在引用的变量、对象,垃圾回收机制就会回收)

垃圾回收机制:

常见的浏览器垃圾回收算法: 引用计数 和 标记清除法

​ 1)引用计数:如果没有任何变量指向它了,说明该对象已经不再需要了。缺点:循环引用

​ 2)标记清除法:在JS中就是全局出发定时扫描内存中的对象,无法触及的对象,就会背回收。

let、const、var的区别

1、var声明变量存在提升(提升当前作用域最顶端),let和const是不存在变量提升的情况
2、var没有块级作用,let和const存在块级作用域
3、var允许重复声明,let和const在同一作用域不允许重复声明
4、var和let声明变量可以修改,const是常量不能改变

ES6的新特性

1、let、const
2、解构赋值 let { a, b } = { a: 1, b: 2 }
3、箭头函数
4、字符串模板
5、扩展运算符
6、数组方法:map、filter等等
7、类:class关键字
8、promise
9、函数参数默认值 fn(a = 1) {}
10、对象属性简写 let a = 1; let obj = {a}
11、模块化:import--引入、exprot default--导出

posted @ 2022-06-15 23:25  秋弦  阅读(145)  评论(0编辑  收藏  举报