JS面试题

1.JavaScript 的组成

JavaScript 由以下三部分组成:

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

2.JS 的基本数据类型和引用数据类型

  • 基本数据类型:undefined、null、boolean、number、string、symbol
  • 引用数据类型:object、array、function

3.谈谈 this 对象的理解

  • this 总是指向函数的直接调用者
  • 如果有 new 关键字,this 指向 new 出来的实例对象
  • 在事件中,this 指向触发这个事件的对象

4.什么是 Window 对象? 什么是 Document 对象?

  • Window 对象表示当前浏览器的窗口,是 JavaScript 的顶级对象。
  • 我们创建的所有对象、函数、变量都是 Window 对象的成员。
  • Window 对象的方法和属性是在全局范围内有效的。
  • Document 对象是 HTML 文档的根节点与所有其他节点(元素节点,文本节点,属性节点, 注释节点)
  • Document 对象使我们可以通过脚本对 HTML 页面中的所有元素进行访问
  • Document 对象是 Window 对象的一部分,可通过 window.document 属性对其进行访问

5.介绍 DOM0,DOM2,DOM3 事件处理方式区别

DOM0 级事件处理方式:

  • btn.onclick = func;
  • btn.onclick = null;

DOM2 级事件处理方式:

  • btn.addEventListener(‘click’, func, false);
  • btn.removeEventListener(‘click’, func, false);
  • btn.attachEvent(“onclick”, func);
  • btn.detachEvent(“onclick”, func);

DOM3 级事件处理方式:

  • eventUtil.addListener(input, “textInput”, func);
  • eventUtil 是自定义对象,textInput 是 DOM3 级事件

6.如何获得一个 DOM 元素的绝对位置?

  • elem.offsetLeft:返回元素相对于其定位父级左侧的距离
  • elem.offsetTop:返回元素相对于其定位父级顶部的距离
  • elem.getBoundingClientRect():返回一个 DOMRect 对象,包含一组描述边框的只读属性,单位像素

7.什么是闭包(closure),为什么要用它?

闭包是指有权访问另一个函数作用域中变量的函数,创建闭包的最常见的方式就是在一个函数内创建另一个函数,通过另一个函数访问这个函数的局部变量,利用闭包可以突破作用链域

闭包的特性:

  • 函数内再嵌套函数
  • 内部函数可以引用外层的参数和变量
  • 参数和变量不会被垃圾回收机制回收

8.DOM 操作——怎样添加、移除、移动、复制、创建和查找节点?

创建新节点

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

添加、移除、替换、插入

  • appendChild()
  • removeChild()
  • replaceChild()
  • insertBefore() //在已有的子节点前插入一个新的子节点

查找

  • getElementsByTagName() //通过标签名称
  • getElementsByName() // 通过元素的 Name 属性的值(IE 容错能力较强,会得到一个数组,其中包括 id 等于 - name 值的) * getElementById() //通过元素 Id,唯一性

9.javascript的typeof返回哪些数据类型.

string ,boolean, number, undefined, function, object

10.split() join() 的区别

前者是将字符串切割成数组的形式,后者是将数组转换成字符串

11.数组方法pop() push() unshift() shift()

  • push()尾部添加

  • pop()尾部删除

  • unshift()头部添加

  • shift()头部删除

posted @ 2020-02-17 15:13  CV攻城狮  Views(92)  Comments(0Edit  收藏  举报