当前位置: 首页 > 科技观察

遇到一道奇怪的面试题,x!==xcanbetrue-

时间:2023-03-21 15:53:27 科技观察

前言最近,我被问了几个奇怪的面试问题。它们不同于一般的问题:这些面试题看起来很简单,但是考验你对JavaScript的透彻理解。你能答对多少个答案?x!==x可以是真的吗?请问,当x的值为what时,会打印大千世界constx=?//??if(x!==x){console.log('GreatMovetotheWorld')}奇怪,有没有不等于自己的值?JS中确实有一个值NaN,它不等于任何值,甚至不等于自己。constx=NaNif(x!==x){console.log('伟大的走向世界')}console.log(NaN===NaN)//falseconsole.log(x!==x)//真正的控制台。log(Number.isNaN(x))//true(!isNaN(x)&&x!==x)可以是真的吗?现在我们排除了NaN,那么什么值不能等于它自己呢?常数x=?if(!isNaN(x)&&x!==x){console.log('hellofatfish')}viewrawq2-1.jshostedwith也许你知道object.Defineproperty,它可以帮助我们解决这个问题。window.x=0Object.defineProperty(window,'x',{get(){returnMath.random()}})console.log(x)//0.12259077808826002console.log(x===x)//falseconsole.log(x!==x)//true3.如何让x===x+1可能并不容易,但是只要懂JS,就会知道Number.MAX_SAFE_INTEGER,也就是常量表示JavaScript中的最大值(2^53-1)的最大安全整数。因此,我们可以将Number.MAX_SAFE_INTEGER分配给x:constx=Number.MAX_SAFE_INTEGER+1if(x===x+1){console.log('Greatmovetotheworld')}4.x>x可以是真的吗?不想看了,这是什么垃圾问题?常数x=?if(x>x){console.log('hellofatfish')}虽然看起来不太可能,但一个值怎么可能大于它自己呢?但是,我们可以使用Symbol.toPrimitive函数来完成此操作。constx={value:1,[Symbol.toPrimitive](){console.log('x',this.value)return--this.value}}if(x>x){console.log('大动作这个世界')}真是奇(垃圾)奇(垃圾)。5.typeofx==='undefined'&&x.length>0constx=?if(typeofx==='undefined'&&x.length>0){console.log('Greatmovetotheworld')}我不能承认,JS是一门神奇的语言。除了undefined本身,还有什么其他值可以使typeofx===undefined为真?答案是document.all,代表页面上的所有元素。constx=document.allif(typeofx==='undefined'&&x.length>0){console.log('伟大的走向世界')}console.log(x)console.log(typeofx)安慰。log(x===undefined)你最后遇到了什么奇葩面试题,欢迎留言补充!!作者:fatfish译者:前端小智来源:medium原文:https://javascript.plnenglish.io/interviewer-can-x-x-return-true-in-javascript-7e1d1a7b5cd