Loading [MathJax]/jax/input/TeX/config.js
前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >专栏 >(a ==1 && a== 2 && a==3) 有可能是 true 吗?

(a ==1 && a== 2 && a==3) 有可能是 true 吗?

作者头像
用户9914333
发布于 2022-07-21 11:54:31
发布于 2022-07-21 11:54:31
30700
代码可运行
举报
文章被收录于专栏:bug收集bug收集
运行总次数:0
代码可运行

bug收集:专门解决与收集bug的网站

网址:www.bugshouji.com

01

问题

一个有趣的问题 ,也是很多大公司的面试题

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
var a = ? 
if(a == 1 && a == 2 && a == 3) { 
  console.log('Hello World!'); 
}

如上代码:a 等于什么的时候?, 可以满足条件,输出hello world

02

答案 & 解析(请看到最后)

大部分解决方法都是使用toString或者valueOf实现的,主要利用:运算数两边的类型不同时,会进行隐式转换.

注:当对象没有valueOf方法时,将会使用toString方法,所以重写这两个方法都可以。

重写valueOf

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
const a = { 
     num:0, 
     valueOf: function(){
          return this.num+=1
     }
}

重写toString

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
const a = { 
     num:0, 
     toString:function(){
          return this.num+=1
     }
}

03

疑问

大家会发现,上面用的是两个等号==

如果是三个等号===呢?

如何让(a===1&&a===2&&a===3)的值为true

上面的方法,已经失效了

这需要使用Object.defineProperty来解决,使用它来劫持a变量

具体解析,请看明天的文章

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2020-08-06,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 bug收集 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
Object.defineProperty 与 Proxy 实现a===1&&a===2&&a===3 结果为true
上一篇文章实现了 ( a == 1 && a == 2 && a == 3 ) 结果为true.
用户9914333
2022/07/21
3140
Object.defineProperty 与 Proxy 实现a===1&&a===2&&a===3 结果为true
你确定(a == 1 && a == 2 && a == 3)不能为true?
前言 最近遇到一个非常有意思的面试题: JavaScript中有没有可能让(a== 1 && a ==2 && a==3)返回true? 讲真刚看到这题的时候,我是用这种眼神看面试官的:你TM逗我呢?
前端胖头鱼
2022/07/25
4310
你确定(a == 1 && a == 2 && a == 3)不能为true?
玩转JS的类型转换黑科技0.前言1.奇葩例子2.从[]==![]开始3.从已有的得到想不到的4.关于(a==1 && a==2 && a==3)4.2 ===
js身为一种弱类型的语言,不用像c语言那样要定义int、float、double、string等等数据类型,因为允许变量类型的隐式转换和允许强制类型转换。我们在定义一个变量的时候,就一个var、let、const搞定,不用担心数据的类型。比如常见的字符串拼接,用+号可以实现变量和字符串的拼接。 总的来说,一般的规则是
lhyt
2018/10/31
8410
JavaScript类型转换总结与常见情况解析
类型转换是将值从一种类型转换为另一种类型的过程(比如字符串转数字,对象转布尔值等)
Leophen
2019/08/23
1.6K0
JavaScript类型转换总结与常见情况解析
前端二面vue面试题总结_2023-03-01
在 Vue3.0 中变量必须 return 出来, template 中才能使用;而在 Vue3.2 中只需要在 script 标签上加上 setup 属性,无需 return, template 便可直接使用,非常的香啊!
用户10377014
2023/03/01
7970
2023前端二面手写面试题总结_2023-02-23
题目描述:JS 实现一个带并发限制的异步调度器 Scheduler,保证同时运行的任务最多有两个
用户10358576
2023/02/23
6000
【面试宝典】299- 每天5道题,温故而知新(2)
本系列文章针对目前常见的面试题,仅提供了相应的核心原理及思路,部分边界细节未处理。后续会持续更新,希望对你有所帮助。
pingan8787
2019/07/30
4190
【面试宝典】299- 每天5道题,温故而知新(2)
耽误你的十分钟,让MVVM原理还给你
众所周知当下是MVVM盛行的时代,从早期的Angular到现在的React和Vue,再从最初的三分天下到现在的两虎相争。
Nealyang
2019/09/29
1.1K0
耽误你的十分钟,让MVVM原理还给你
Only 10 分钟,给你圈出 MVVM 原理重难点
来源:https://juejin.im/post/5abdd6f6f265da23793c4458
coder_koala
2020/02/20
6280
Only 10 分钟,给你圈出 MVVM 原理重难点
腾讯前端二面常考vue面试题(附答案)_2023-02-27
简单说,Vue的编译过程就是将template转化为render函数的过程。会经历以下阶段:
yyds2026
2023/02/27
6200
全面分析toString与valueOf,并随手解决掉几道大厂必备面试题
最近深圳的天气是变化多端的,时而倾盆大雨,时而艳阳高照,多希望能有个几天是连绵不绝地下雨,那该多好啊~~
用户1890129
2020/12/16
4150
大厂面试题分享:如何让(a===1&&a===2&&a===3)的值为true?
当我第一次看到这一题目的时候,我是比较震惊的,分析了下很不合我们编程的常理,并认为不大可能,变量a要在同一情况下要同时等于1,2和3这三个值,这是天方夜谭吧,不亚于哥德巴赫1+1=1的猜想吧,不过一切皆有可能,出于好奇心,想了许久之后我还是决定尝试解决的办法。
wscats
2020/06/05
8380
关于函数柯里化使用的一道面试题
第一次看到柯里化这个词的时候,会感觉很高端,实际上当你了解了后会发现其实就是高阶函数的一个特殊用法。
用户9914333
2022/07/21
2240
关于函数柯里化使用的一道面试题
奇怪的知识增加了,如何让 (a == 1 && a == 2 && a == 3) 返回 true
原文:http://www.fly63.com/article/detial/851
@超人
2021/04/26
1K0
奇怪的知识增加了,如何让 (a == 1 && a == 2 && a == 3) 返回 true
玩转js类型转换
对于object和number、string、boolean之间的转换关系,这里偷网上一幅图
IMWeb前端团队
2019/12/03
5.5K0
玩转js类型转换
经常被面试官问道的JavaScript数据类型知识你真的懂吗?
之前面试了几个开发者,他们确实做过不少项目,能力也是不错的,但是发现js基础不扎实, 于是决定写一下这篇javascrip数据类型相关的基础文章,其实也不仅仅是因为面试了他们,之前自己在面试的时候,也曾经被虐过,面试官说过的最深刻的一句话我到现在都记得。
coder_koala
2019/07/23
6230
经常被面试官问道的JavaScript数据类型知识你真的懂吗?
热乎的~前端面试题(昨天)
沉浸式趣谈
2024/03/13
1300
热乎的~前端面试题(昨天)
实现一个自己的MVVM
vue数据双向绑定是通过数据劫持结合发布者-订阅者模式的方式来实现的,那么vue是如果进行数据劫持的,我们可以先来看一下通过控制台输出一个定义在vue初始化数据上的对象:
前端迷
2019/12/05
5440
实现一个自己的MVVM
腾讯二面vue面试题总结
对象内部通过 defineReactive 方法,使用 Object.defineProperty 来劫持各个属性的 setter、getter(只会劫持已经存在的属性),数组则是通过重写数组7个方法来实现。当页面使用对应属性时,每个属性都拥有自己的 dep 属性,存放他所依赖的 watcher(依赖收集),当属性变化后会通知自己对应的 watcher 去更新(派发更新)
bb_xiaxia1998
2022/11/18
7320
这可能是你需要的vue考点梳理
Vue2.x开始引入"Virtual DOM",消除了和React在这方面的差异,但是在具体的细节还是有各自的特点。
bb_xiaxia1998
2022/11/01
1.1K0
推荐阅读
相关推荐
Object.defineProperty 与 Proxy 实现a===1&&a===2&&a===3 结果为true
更多 >
领券
社区富文本编辑器全新改版!诚邀体验~
全新交互,全新视觉,新增快捷键、悬浮工具栏、高亮块等功能并同时优化现有功能,全面提升创作效率和体验
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
查看详情【社区公告】 技术创作特训营有奖征文