满足a==1a==2

网上看到的一道JS面试题,觉得很有意思

觉得很有意思的原因是,这个式子乍看之下是有些反常识的。“a1&&a2”,它的意思似乎是“a在等于1的同时又等于2”,这时我们的第一反应可能就是不成立,一个变量怎么可能同时等于两个数值呢?

然而,要是a不是一个简单变量呢?a在这里的本质其实是一个可以返回值的计算,其代表的可能是一个包含纯数值的简单变量,也可能是一个包含额外计算的复杂对象。

这里只要稍微调整下思路,不要把a看成一个简单的变量,情况就大有不同。比如a代表的是另一个表达式,代表一个变量i的自加“i++”,且i的初始值为1,这时你是否还觉得等式的成立有问题呢?即表达式“(i++ == 1 && i++ == 2)”的成立就不会觉得那么奇怪了吧。

当然,我们还是要回归本文标题这个具体的题目,至少“i++”这种运算是不能直接被一个变量a引用的,它只会把计算结果返回给a。这样,本文标题的表达式就无法成立。但是,JS的对象都继承了一个valueOf()方法,此方法可以帮我们引用类似“i++”的计算。

这个valueOf()方法会在对象执行一些运算时被调用,用以返回该对象的值,而等于运算“==”就在其列。这时,通过改写一个自定义对象的valueOf()方法,让其返回指定的内部变量i的值,并在每次返回前先做自加运算,那么就可以让本文标题的表达式成立了。

具体的JS代码和其在Chrome浏览器Console控制台下的执行结果如下:
在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/634737.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

win10编译openssl

环境 Win10 64位 VS2022 openssl 3.3.0 nasm NASM version 2.16.01 compiled on Dec 21 2022 perl strawberry-5.38.2.2环境变量设置 perl加入到环境变量,略过nasm加入到环境变量vs的nmake加入到环境变量我的nmake位置如下: C:\Program…

kubeadm部署k8s v1.28

一、主机准备 主机硬件配置说明 作用IP地址操作系统配置k8s-master01192.168.136.55openEuler-22.03-LTS-SP12颗CPU 4G内存 50G硬盘k8s-node01192.168.136.56openEuler-22.03-LTS-SP12颗CPU 4G内存 50G硬盘k8s-node02192.168.136.57openEuler-22.03-LTS-SP12颗CPU 4G内存 50G…

Gitee在已有项目基础上创建仓库中遇到的问题和解决

问题一:fatal: remote origin already exists 解释:当前仓库添加了一个名为"origin"的远程仓库配置,此时输入 git remote add origin https://xxx就会提示上面的内容。 解决方案1:移除旧的origin git remote remove origin 解决方案…

QTextEdit 控件上显示信息:

目录 1. 使用 append 方法: 2. 使用 setPlainText 方法 3.例子: 1. 使用 append 方法: 如果你希望在 QTextEdit 控件上追加显示新的信息,可以使用 append 方法。例如,当你想要追加一行新的日志信息: self.text_edit.append(&…

金融信贷风控基础知识

一、所谓风控(What && Why) 所谓风控,可以拆解从2个方面看,即 风险和控制 风险(what) 风险 这里狭隘的特指互联网产品中存在的风险点,例如 账户风险 垃圾注册账号账号被泄露盗用 交易支付风险 刷单:为提升卖家店铺人气…

大模型难落地?聊聊大模型在智能财务应用的正确打开方式

大模型难落地?No,是你还不够了解它! (全文4989字,阅读约需10分钟) 这两天,大模型几乎成了WAIC(世界人工智能大会)的唯一主题。大会上,各家企业的大模型悉数…

深度学习之基于Tensorflow模版匹配智慧停车计费系统

欢迎大家点赞、收藏、关注、评论啦 ,由于篇幅有限,只展示了部分核心代码。 文章目录 一项目简介 二、功能三、系统四. 总结 一项目简介 一、项目背景 随着城市化进程的加快,停车难问题日益凸显。传统的停车管理方式已经无法满足现代社会的需…

QT7_视频知识点笔记_5_线程,数据库

多线程 两种办法:第一种:Qt4.7之前的线程使用的方法(简单);第二种:Qt4.7之后的(灵活–推荐)----connect最后一个参数的作用:默认连接,队列连接,直…

Linux软硬链接及动静态库

软硬链接与动静态库 软连接 创建链接的方法: ln -s test1.txt test2.txt 其中ln 是link(链接),-s 是soft(软),后者链接前者。 此时打开test2.txt,发现其中内容与test.txt一致。那么软连接到底建立了什么联系?…

【笔记】软件架构师要点记录(2)

【笔记】软件架构师要点记录 20240523案例一案例二案例三案例四案例五案例六案例七案例十 20240523 基于前10个架构案例场景,对用到的专业术语进行整理,方便后续查看。 案例一 MVC架构风格组件交互方式 MVC是一种用来构建用户界面时采用的架构设计风格…

分布式Id/框架/发号器一文介绍

文章目录 一、分布式id介绍1、什么是分布式id2、分布式id的特点 二、UUid生成算法1、JDK UUID2、Snowflake 雪花算法3、PearFlower 梨花算法4、Mist 薄雾算法 三、常见发号器服务1、数据库1)自增2)号段模式 2、NoSQL 四、常见框架1、百度UIDGenerator2、…

基于BERT的中文情感分析实战

数据与代码链接见文末 bert开源项目解读:谷歌开源项目BERT源码解读与应用实例-CSDN博客 基于BERT的中文命名实体识别识别实战:基于BERT的中文命名实体识别识别实战-CSDN博客 1.数据 在data目录下,提供了中文情感分析的数据, 类别1代表正向情感,类别2代表负向情感。

打气球小游戏

1.气球往上飘 我们声明两个符号常量来作为窗体的长和宽,接着就是常规操作 #define WINDOW_WIDTH 800 #define WINDOW_HEIGHT 600#include<easyx.h> #include<stdio.h> int main() {initgraph(WINDOW_WIDTH, WINDOW_HEIGHT);setbkcolor(WHITE);cleardevice();get…

几年前写的一个小工具

几年前写的一个工具&#xff0c;开发工具 是Delphi7 UniDAC FastReport2.53 &#xff0c;开发时间不到8小时&#xff08;同时还在处理其他事情&#xff09;。 其实把这个翻出来&#xff0c;是想说说俺的一个同事。他是俺这几年遇到的最优秀的人之一。他负责售后维护部&#x…

浅谈AI大模型的数据特点和应用问题

【摘要】AI大模型的训练、推理及应用落地都需要大量的数据&#xff0c;其数据具有参数和数据量大、质量要求高、行业垂直属性强、资源消耗大等特点&#xff0c;由此带来的个人隐私泄露、数据中毒、数据篡改等数据安全风险已成为业界必须应对的重要议题。目前大模型的规模化应用…

使用 LlamaParse 进行 PDF 解析并创建知识图谱

此 Python 笔记本提供了有关利用 LlamaParse 从 PDF 文档中提取信息并随后将提取的内容存储到 Neo4j 图形数据库中的综合指南。本教程在设计时考虑到了实用性&#xff0c;适合对文档处理、信息提取和图形数据库技术感兴趣的开发人员、数据科学家和技术爱好者。 该笔记本电脑的主…

怎么判断一家公司是否有前景

前段时间&#xff0c;有个老铁&#xff0c;给我发了一长串文字&#xff0c;看得我头皮发麻。 好在&#xff0c;他情商很高&#xff0c;买了我一个小时的时间&#xff0c;我才硬着头皮看完&#xff0c;根据他的情况&#xff0c;跟他打了电话交流。 他目前的处境&#xff0c;是在…

干G货,性能测试基本方法和原则,

一、性能测试关键点 评估性能指标——线程tps&#xff08;可架构给&#xff09; 吞吐量qps&#xff08;可架构给&#xff09; 错误率&#xff08;可架构给&#xff09; 平均响应时间&#xff08;可架构给&#xff09;模拟线上数据量了解接口有没有缓存&#xff0c;有缓存的需要…

HIOKI日置阻抗分析仪IM7583

HIOKI日置阻抗分析仪IM7583 HIOKI日置阻抗分析仪IM7583 HIOKI日置阻抗分析仪IM7583 功率分析仪 PW6001 基本参数 测量线路 单相2线&#xff0c;单相3线&#xff0c;三相3线&#xff0c;三相4线 输入通道数 zui大6ch&#xff0c;电压/电流同时单位是1ch &#xff08;电压测…

ClickHouse配置与使用

静态IP配置 # 修改网卡配置文件 vim /etc/sysconfig/network-scripts/ifcfg-ens33# 修改文件内容 TYPEEthernet PROXY_METHODnone BROWSER_ONLYno BOOTPROTOstatic IPADDR192.168.18.128 NETMASK255.255.255.0 GATEWAY192.168.18.2 DEFROUTEyes IPV4_FAILURE_FATALno IPV6INIT…