JavaScript面试题五

一、请解释JavaScript中的null和undefined的区别?

在JavaScript中,nullundefined 都是表示某种“无”或“空”的值,但它们之间有着明确的区别和用途。

  1. undefined

    • undefined 是一个特殊的值,它表示变量未定义或者未赋值。
    • 当你声明了一个变量但没有给它赋值时,这个变量的值就是 undefined
    • 例如:let x; 在这种情况下,x 的值就是 undefined
    • 另外,当你尝试访问一个不存在的对象属性时,也会返回 undefined
    • 例如:let obj = {}; console.log(obj.nonExistentProperty); // 输出 undefined
    • typeof undefined 返回 “undefined”。
    • undefined 实际上是全局对象(在浏览器中是 window,在Node.js中是 global)的一个属性。
  2. null

    • null 是一个特殊的值,表示“无”或“空引用”。
    • 它常被用来表示一个空的对象引用。
    • 例如,当你想要清除一个对象引用时,你可以将其设置为 null,以确保它不再指向任何对象。
    • typeof null 返回 “object”,但这是一个历史遗留问题,实际上 null 并不是对象。
    • null 是JavaScript中的一个字面量,不是全局对象的属性。

区别

  • undefined 表示变量未定义或未赋值,而 null 表示一个空的对象引用。
  • undefined 是由变量自身的状态决定的,而 null 是由程序员显式设置的。
  • typeof undefined 返回 “undefined”,而 typeof null 返回 “object”(尽管这是一个错误,但出于历史原因,它一直存在)。

在编程实践中,通常推荐在你知道某个变量将来会引用一个对象时,使用 null 进行初始化,而不是使用 undefined。这样可以更明确地表示该变量的意图和状态。

二、请列出一些常用的数组操作方法,并简述其用途?

在JavaScript中,数组(Array)是一个非常重要的数据类型,它提供了许多内置的方法来操作和处理数据。以下是一些常用的数组操作方法及其用途:

  1. push()

    • 用途:向数组的末尾添加一个或多个元素,并返回新的长度。
    • 示例:let arr = [1, 2, 3]; arr.push(4, 5); // arr 现在是 [1, 2, 3, 4, 5]
  2. pop()

    • 用途:删除并返回数组的最后一个元素。
    • 示例:let arr = [1, 2, 3]; let last = arr.pop(); // arr 现在是 [1, 2],last 是 3
  3. shift()

    • 用途:删除并返回数组的第一个元素。
    • 示例:let arr = [1, 2, 3]; let first = arr.shift(); // arr 现在是 [2, 3],first 是 1
  4. unshift()

    • 用途:向数组的开头添加一个或多个元素,并返回新的长度。
    • 示例:let arr = [1, 2, 3]; arr.unshift(0); // arr 现在是 [0, 1, 2, 3]
  5. splice()

    • 用途:通过删除或替换现有元素或者添加新元素来修改数组,并返回被删除的元素。
    • 示例:let arr = [1, 2, 3, 4, 5]; let removed = arr.splice(2, 2, 'a', 'b'); // arr 现在是 [1, 2, 'a', 'b', 5],removed 是 [3, 4]
  6. slice()

    • 用途:返回一个新的数组对象,它是一个由开始到结束(不包括结束)选择的、由原数组的浅拷贝构成。原始数组不会被改变。
    • 示例:let arr = [1, 2, 3, 4, 5]; let sliced = arr.slice(1, 3); // arr 仍然是 [1, 2, 3, 4, 5],sliced 是 [2, 3]
  7. concat()

    • 用途:用于合并两个或多个数组。此方法不会更改现有数组,而是返回一个新数组。
    • 示例:let arr1 = [1, 2, 3]; let arr2 = [4, 5, 6]; let arr3 = arr1.concat(arr2); // arr1 仍然是 [1, 2, 3],arr2 仍然是 [4, 5, 6],arr3 是 [1, 2, 3, 4, 5, 6]
  8. join()

    • 用途:将一个数组(或一个类数组对象)的所有元素转换成一个字符串并返回这个字符串。元素是通过指定的分隔符进行分隔的。
    • 示例:let arr = [1, 2, 3]; let str = arr.join(','); // str 是 "1,2,3"
  9. reverse()

    • 用途:颠倒数组中元素的顺序。
    • 示例:let arr = [1, 2, 3]; arr.reverse(); // arr 现在是 [3, 2, 1]
  10. sort()

    • 用途:对数组的元素进行排序,并返回数组。默认排序顺序是根据字符串Unicode码点。
    • 示例:let arr = [5, 2, 9, 1]; arr.sort(); // arr 现在是 [1, 2, 5, 9],但注意 5 在 9 前面,因为字符串 '5' 在 '9' 前面
    • 注意:sort() 方法会改变原数组。如果你需要按照数字大小排序,需要提供一个比较函数。
  11. map()

    • 用途:创建一个新数组,其结果是该数组中的每个元素都调用一个提供的函数后返回的结果。
    • 示例:let arr = [1, 2, 3]; let doubled = arr.map(x => x * 2); // doubled 是 [2, 4, 6]
  12. filter()

    • 用途:创建一个新数组, 其包含通过所提供函数实现的测试的所有元素。
    • 示例:`let arr = [1, 2, 3
  • 3
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

笃励

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值