最近遇到了一些奇葩有趣的面试题,和一般的面试题不一样,这些面试题看似简单,却考验你对JavaScript的透彻理解,今天给大家分享5个神奇的JavaScript知识点,看看你能答对几个?现在,让我们马上开始吧。1、“x!==x”能返回true吗?输出“hellofatfish”的“x”值应该是多少?常数x=?//请填写"x?if(x!==x){console.log('hellofatfish')}好神奇,有没有不等于自己的值?然而,在JavaScript中有一个valueNaN不等于任何东西,甚至不等于它自己。constx=NaN//请填写"x?if(x!==x){console.log('hellofatfish')}console.log的值(NaN===NaN)//falseconsole.log(x!==x)//trueconsole.log(Number.isNaN(x))//true2。(!isNaN(x)&&x!==x)可以返回真吗?好吧,当我们过滤掉“NaN”的时候,一个不等于自己的值有什么值呢?常数x=?//请填写"x?if(!isNaN(x)&&x!==x){console.log('hellofatfish')}可能你知道"object.Defineproperty",可以帮我们解决这个问题。window.x=0//任何值都是OKObject.defineProperty(window,'x',{get(){returnMath.random()}})console.log(x)//0.12259077808826002console.log(x===x)//falseconsole.log(x!==x)//true3。如何使“x===x+1”?这道题可能不太容易,但只要你懂JavaScript,就会知道“Number.MAX_SAFE_INTEGER常量代表JavaScript中最大的安全整数(2?3—1)”。(这个解释来自MDN)constx=?//请填写“x?if(x===x+1){console.log('hellofatfish')}的值,以便我们可以为“x”分配任何大于“Number.MAX_SAFE_INTEGER”的值。constx=Number.MAX_SAFE_INTEGER+1//请填写“x?if(x===x+1){console.log('hellofatfish')}4.“x>x”是否为真?我不想看了,这是什么垃圾问题?常数x=?//Pleaseinthevalueof"x?if(x>x){console.log('hellofatfish')}虽然,看起来不太可能,一个值怎么会比它自己大呢?但是,我们可以使用"Symbol.toPrimitive”函数来完成这个问题。constx={//请填写"x的值?value:1,[Symbol.toPrimitive](){console.log('x',this.value)return--this.value}}if(x>x){console.log('hellofatfish')}哦,太棒了!5.typeofx==='undefined'&&x.length>0?constx=?//请填写“x”的值?if(typeofx==='undefined'&&x.length>0){console.log('hellofatfish')}我不得不承认JavaScript是一种了不起的语言。除了undefined本身,还有什么值可以使typeofx===undefined”为真?答案是文件。All包含文档中每个元素的HTMLAllCollection(来自MDN)。constx=document.all//请填写"x?if(typeofx==='undefined'&&x.length>0){console.log('hellofatfish')}console.log(x)console.log(typeofx)console.log(x===undefined)这些问题是不是很神奇?写在最后,以上就是今天和大家分享的5个非常有趣和神奇的JavaScript知识点,如果你有有问题欢迎在留言区留言,如果觉得有用或者有趣,请点赞,关注我,分享给你的开发者朋友,说不定能帮到他。最后感谢阅读,祝编程愉快!
