• 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()头部删除

  • 相关阅读:
    Spring 学习笔记
    Hello Spring(3)ConnectionUtility
    android ndk开发
    java udp 广播及socket通讯
    android 横向滚动屏幕实现(2)
    android 基于ftp远程文件管理
    android 软键盘的弹出问题总结
    android 滚动字幕
    android 基于apache ftp server
    android 设置壁纸几种方法
  • 原文地址:https://www.cnblogs.com/huangguofeng/p/13735867.html
Copyright © 2020-2023  润新知