• 前端JavaScript面试题个人总结


    1、JS有哪些数据类型

    • 主要数据类型:UndefinedNullBooleanNumber、String
    • 引用数据类型:object、array、function

    2、JS的组成

    • ECMAScript(核心):JavaScript 语言基础
    • DOM(文档对象模型):规定了访问HTML和XML的接口
    • BOM(浏览器对象模型):提供了浏览器窗口之间进行交互的对象和方法

    3、介绍JS有哪些内置对象

    • 数据封装类对象:Object、Array、Boolean、Number、String
    • 其他对象:Function、Arguments、Math、Date、RegExp、Error
    • ES6新增对象:Symbol、Map、Set、Promises、Proxy、Reflect

    4、JS中对this的指向和理解

    调用方式 非严格模式下 备注
    普通函数调用 window 严格模式下是 undefined
    构造函数调用 创建的实例对象 原型方法中 this 也是实例对象
    对象方法调用 该方法所属对象 紧挨着的对象
    事件绑定方法 触发事件的对象
    定时器函数 window

    5、null和undefined的区别?

    • null是一个表示”无”的对象,转为数值时为0;
      • 作为函数的参数,表示该函数的参数不是对象。
      • 作为对象原型链的终点。
    • undefined是一个表示”无”的原始值,转为数值时为NaN。
      • 变量被声明了,但没有赋值时,就等于undefined。
      • 调用函数时,应该提供的参数没有提供,该参数等于undefined。
      • 对象没有赋值的属性,该属性的值为undefined。
      • 函数没有返回值时,默认返回undefined。

    注意:nullundefined结果是true的,null=undefined结果是false的。

    6、什么是内存泄漏,哪些操作会造成内存泄漏

    • 内存泄漏:是指一块被分配的内存既不能使用,又不能回收,直到浏览器进程结束

    • 可能造成内存泄漏的操作:

      • 意外的全局变量
      • 闭包
      • 循环引用
      • 被遗忘的定时器或者回调函数

    7、export 与 export default有什么区别

    • export与 export default 均可用于导出常量、函数、文件、模块等
    • 在一个文件或模块中,export、import可以有多个,export default`仅有一个
    • 通过 export 方式导出,在导入时要加 { },export default`则不需要
    • 使用 export default命令,为模块指定默认输出,这样就不需要知道所要加载模块的变量名; export加载的时候需要知道加载模块的变量名
    • export default命令的本质是将后面的值,赋给 default 变量,所以可以直接将一个值写在 export default之后

    8、JS怎样添加、移除、替换、插入、复制、创建和查找节点

    • 添加、移除、替换、之前插入、之后插入、复制

      appendChild()
      removeChild()
      replaceChild()
      insertBefore()  
      insertAfter() 
      cloneNode() 
      
    • 创建新节点

      createDocumentFragment() //创建一个DOM片段
      createElement() //创建一个具体的元素
      createTextNode() //创建一个文本节点
      
    • 查找新节点

      document.getElementsByTagName("")    //通过标签名称
      document.getElementsByName("")    //通过元素的Name属性的值
      document.getElementById("")    //通过元素Id,唯一性
      document.getElementsByClassName("");  //通过类查找
      document.querySelector("")  //通过选择器
      

    9、比较typeof与instanceof?

    相同点:JavaScript 中 typeof 和 instanceof 常用来判断一个变量是否为空,或者是什么类型的。

    • typeof的定义和用法:返回值是一个字符串,用来说明变量的数据类型。

      • typeof 一般只能返回如下几个结果:number,boolean,string,function,object,undefined。
      • typeof 来获取一个变量是否存在,如 if(typeof a!="undefined"){alert("ok")},而不要去使用 if(a) 因为如果 a 不存在(未声明)则会出错。
      • 对于 Array,Null 等特殊对象使用 typeof 一律返回 object,这正是 typeof 的局限性。
    • Instanceof定义和用法:instanceof 用于判断一个变量是否属于某个对象的实例。

      a instanceof b?alert("true"):alert("false"); //a是b的实例?真:假
      
      var a = new Array(); 
      alert(a instanceof Array);  // true
      alert(a instanceof Object)  // true
      如上,会返回 true,同时 alert(a instanceof Object) 也会返回 true;这是因为 Array 是 object 的子类。
      
      function test(){};
      var a = new test();
      alert(a instanceof test)   // true
      

    10、如何理解闭包函数?

    • 是一个使函数外部能够调用函数内部定义的变量的函数 ,
    • 也就是当一个函数的返回值是另外一个函数,而返回的那个函数如果调用了其父函数内部的其它变量,如果返 回的这个函数在外部被执行,就产生了闭包。
    • 闭包的特性:
      • 函数内再嵌套函数
      • 内部函数可以引用外层的参数和变量
      • 参数和变量不会被垃圾回收机制回收

    11、Ajax同步和异步的区别

    AJAX中根据async的值不同分为同步(async = false)和异步(async = true)两种执行方式;在W3C的教程中推荐使用异步执行;在默认情况下为异步(true)

    • 异步:不管ajax的执行请求有没有返回,代码会继续往下执行,就好比两条线程同时执行一样。
    • 同步:只有ajax请求完成返回数据之后代码才能继续往下执行,就好比单线程一样。

    12、介绍一下ES6的基本特性

    ECMAScript 6.0 是JavaScript语言的下一代标准

    • 声明变量的方式 let、const
    • 变量解构赋值
    • 字符串新增方法 includes()、 startsWith()、endsWith()等
    • 数组新增方法 Array.from() 、Array.of()、 entries() 、keys() 、values()等
    • 对象简洁写法以及新增方法 Object.is()、Object.assign()、 `entries()、keys()、 values()等
    • Symbol原始数据类型
    • 箭头函数、rest参数、函数参数默认值等
    • 新的数据结构: Set 和 Map
    • Proxy和Reflect
    • Promise对象,异步编程的一种解决方案
    • Generator函数yield命令和async函数 await命令
    • Class类的用法
    • Module体系 模块的加载和输出方式
  • 相关阅读:
    mysql查询版本
    mysql导出bug备注
    linux查找文件
    linux 编译式安装nginx
    linux文件校验
    linux 编译式安装apache
    网络层
    数据链路层
    物理层
    servlet过滤器
  • 原文地址:https://www.cnblogs.com/wangchangli/p/11247718.html
Copyright © 2020-2023  润新知