迹忆客 专注技术分享

当前位置:主页 > 学无止境 > WEB前端 > JavaScript >

Javascript 面试问题: “x !== x” 能否返回 True

作者:迹忆客 最近更新:2023/02/01 浏览次数:

最近看到一些奇怪的面试问题。 它们与常规问题不同:这些面试问题看起来很简单,但它们会测试你对 JavaScript 的透彻理解。 你能答对几个?

1. “x !== x” 能否返回 true

输出“hello fatfish”的“x”值应该是多少?

const x = ?
if (x !== x) {
  console.log('hello fatfish')
}

太奇妙了。 是否存在不等于自身的值? 但是,JavaScript 中有一个值 NaN,它不等于任何值,甚至不等于自身。

const x = NaN 
if (x !== x) {
  console.log('hello fatfish')
}
console.log(NaN === NaN) // false
console.log(x !== x) // true
console.log(Number.isNaN(x)) // true

javascript 面试问题1

2. (!isNaN(x) && x !== x) 可以返回 true 吗?

好的,当我们过滤掉“NaN”时,还有什么值可以让一个值不等于自己呢?

const x = ?
if(!isNaN(x) && x !== x) {
  console.log('hello fatfish')
}

也许你知道“object. Defineproperty”,它可以帮助我们解决这个问题。

window.x = 0
Object.defineProperty(window, 'x', {
  get () {
    return Math.random()
  }
})
console.log(x) // 0.12259077808826002
console.log(x === x) // false
console.log(x !== x) // true

javascript 面试2

3. 如何使“x === x + 1”?

这个问题可能并不容易,但只要你了解 JavaScript,你就会知道“Number.MAX_SAFE_INTEGER 常量代表 JavaScript 中的最大安全整数 (2⁵³ — 1)。”

const x = ?
if (x === x + 1) {
  console.log('hello fatfish')
}

所以我们可以为“x”分配任何大于“Number.MAX_SAFE_INTEGER”的值。

const x =  Number.MAX_SAFE_INTEGER + 1
if (x === x + 1) {
  console.log('hello fatfish')
}

javascript 面试

4. “x > x”可以是 true 吗?

这是什么垃圾问题?

const x = ? 
if (x > x) {
  console.log('hello fatfish')
}

虽然看起来不太可能,但是一个值怎么可能大于它自己呢? 但是,我们可以使用 Symbol.toPrimitive 功能来完成问题。

const x = {
  value: 1,
  [ Symbol.toPrimitive ] () {
    console.log('x', this.value)
    return --this.value
  }
}

if (x > x) {
  console.log('hello fatfish')
}

javascript 面试

哇,太神奇了!

5. typeof x === ‘undefined’ && x.length > 0 ?

const x = ? 
if(typeof x === 'undefined' && x.length > 0) {
  console.log('hello fatfish')
}

我不得不承认 JavaScript 是一门了不起的语言。 除了 undefined 本身,还有什么值可以让 typeof x === undefined 为真呢?

答案是document.All 一个 HTMLAllCollection,它包含 document 中的每个元素。

const x = document.all
if(typeof x === 'undefined' && x.length > 0) {
  console.log('hello fatfish')
}

console.log(x)
console.log(typeof x)
console.log(x === undefined)

转载请发邮件至 1244347461@qq.com 进行申请,经作者同意之后,转载请以链接形式注明出处

本文地址:

相关文章

在 Angular 中上传文件

发布时间:2023/04/14 浏览次数:71 分类:Angular

本教程演示了如何在 Angular 中上传任何文件。我们还将介绍如何在文件上传时显示进度条,并在上传完成时显示文件上传完成消息。

Angular 2 中的复选框双向数据绑定

发布时间:2023/04/14 浏览次数:139 分类:Angular

本教程演示了如何一键标记两个复选框。这篇有 Angular 的文章将着眼于执行复选框双向数据绑定的不同方法。

在 AngularJs 中加载 spinner

发布时间:2023/04/14 浏览次数:107 分类:Angular

我们将介绍如何在请求加载时添加加载 spinner,并在 AngularJs 中加载数据时停止加载器。

在 Angular 中显示和隐藏

发布时间:2023/04/14 浏览次数:78 分类:Angular

本教程演示了 Angular 中的显示和隐藏。在开发商业应用程序时,我们需要根据用户角色或条件隐藏一些数据。我们必须根据该应用程序中的条件显示相同的数据。

在 Angular 中下载文件

发布时间:2023/04/14 浏览次数:104 分类:Angular

本教程演示了如何在 angular 中下载文件。我们将介绍如何通过单击按钮在 Angular 中下载文件并显示一个示例。

扫一扫阅读全部技术教程

社交账号
  • https://www.github.com/onmpw
  • qq:1244347461

最新推荐

教程更新

热门标签

扫码一下
查看教程更方便