image

编辑人: 未来可期

calendar2025-05-31

message4

visits205

三道Javascript面试题详细解析

三道Javascript面试题:

  • JS的数据类型有几种?
  • 引用类型和基本类型的区别是什么?
  • 写一个跨浏览器的事件处理程序?

前两个问题本质是JS的变量问题。

JavaScript变量可以用来保存两种类型的值:基本类型值和引用类型值。
基本类型的值源自以下五种基本数据类型:

  • Undefined
  • Null
  • Boolean
  • Number
  • String

基本类型值和引用类型值具有以下特点:

  • 基本类型值在内存中占据固定大小的空间,因此会被保存栈内存中。
  • 从一个变量向另一个变量复制基本类型的值,会创建这个值的一个副本。
  • 引用类型的值是对象,会保存在队内存中。
  • 包含引用类型值的变量实际上包含的不是对象本身,儿时一个指向该对象的指针。
  • 从一个变量向另一个变量复制引用类型的值,复制的其实是指针,因此两个变量最终都指向同一个对象。
  • 确定一个值是哪种基本类型可以使用typeof操作符,而确定一个值是哪种引用类型可以使用instanceof操作符

JS中的事件

事件是JS中最重要的部分之一,深入了解事件的工作机制以及它们对性能的影响至关重要。

代码如下:

// 事件处理工具,跨浏览器兼容性

var EventUtil = {
    addHandler: function(element, type, handler) {
        if (element.addEventListener) {
            element.addEventListener(type, handler, false);
        } else if (element.attachEvent) {
            element.attachEvent("on" + type, handler);
        } else {
            element["on" + type] = handler;
        };
    },
    removeHandler: function(element, type, handler) {
        if (element.removeEventListener) {
            element.removeEventListener(type, handler, false);
        } else if (element.detachEvent) {
            element.detachEvent("on" + type, handler);
        } else {
            element["on" + type] = null;
        };
    }
}

这两个方法首先都会检测传入的元素是否存在DOM2级方法。

如果存在DOM2级方法,则使用该方法:

传入事件类型、事件处理函数、false(表示冒泡)

如果存在IE的方法,则使用第二种:

事件类型必须加上”on”前缀。

最后一种使用DOM0方法【基本不会执行】。

传入的handler如果是匿名函数的话,无法被移除。

百度笔试:

  • ===运算符判断相等的流程是怎样的
  • ==运算符判断相等的流程是怎样的
  • 闭包
  • for in
  • 原型和构造函数
  • undefined和null
  • 跨域
  • 大题:
    • 字符串的处理
    • 编码的转换

喵呜刷题:让学习像火箭一样快速,快来微信扫码,体验免费刷题服务,开启你的学习加速器!

创作类型:
原创

本文链接:三道Javascript面试题详细解析

版权声明:本站点所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明文章出处。
分享文章
share