请问当 x 值为什么时,才会打印 大迁世界
创新互联专注于中大型企业的网站设计、成都网站建设和网站改版、网站营销服务,追求商业策划与数据分析、创意艺术与技术开发的融合,累计客户上1000+,服务满意度达97%。帮助广大客户顺利对接上互联网浪潮,准确优选出符合自己需要的互联网运用,我们将一直专注成都品牌网站建设和互联网程序开发,在前进的路上,与客户一起成长!
const x = ? // ??
if (x !== x) {
console.log('大迁世界')
}
奇怪,到底有什么值是不等于自身的吗?在 JS 中确实有一个值 NaN,它不等于任何值,甚至不等于自己。
const x = NaN
if (x !== x) {
console.log('大迁世界')
}
console.log(NaN === NaN) // false
console.log(x !== x) // true
console.log(Number.isNaN(x)) // true
现在我们排除 NaN,那么还有什么值可以不等于它自身的?
const x = ?
if(!isNaN(x) && x !== x) {
console.log('hello fatfish')
}
view rawq2-1.js hosted with
也许你知道 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
这个问题可能不容易,但只要你了解 JS,你会知道 Number.MAX_SAFE_INTEGER,它表示 常量表示在 JavaScript 中最大的安全整数(maxinum safe integer)(2^53 - 1)。
所以,我们可以把 Number.MAX_SAFE_INTEGER 赋给 x:
const x = Number.MAX_SAFE_INTEGER + 1
if (x === x + 1) {
console.log('大迁世界')
}
我不想再读了,这是什么垃圾问题?
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('大迁世界')
}
真的很神(垃)奇(圾)。
const x = ?
if(typeof x === 'undefined' && x.length > 0) {
console.log('大迁世界')
}
我不得不承认,JS 是一种神奇的语言。除了 undefined 本身,还有什么值可以使 typeof x === undefined 为 true?
答案就是 document.all,它表示页面上的所有元素。
const x = document.all
if(typeof x === 'undefined' && x.length > 0) {
console.log('大迁世界')
}
console.log(x)
console.log(typeof x)
console.log(x === undefined)
你还遇到过什么奇葩的面试题,欢迎留言补充!!
作者:fatfish
译者:前端小智 来源:medium
原文:https://javascript.plnenglish.io/interviewer-can-x-x-return-true-in-javascript-7e1d1a7b5cd
分享题目:遇到奇葩面试题了,x!==x可以为true?
当前网址:http://www.mswzjz.com/qtweb/news28/179478.html
网站建设、网络推广公司-创新互联,是专注品牌与效果的网站制作,网络营销seo公司;服务项目有等
声明:本网站发布的内容(图片、视频和文字)以用户投稿、用户转载内容为主,如果涉及侵权请尽快告知,我们将会在第一时间删除。文章观点不代表本网站立场,如需处理请联系客服。电话:028-86922220;邮箱:631063699@qq.com。内容未经允许不得转载,或转载时需注明来源: 创新互联