(a ==1 && a== 2 && a==3) 有可能是 true 吗?
今天看到这个题目,感到很有意思,查找了些资料,各位牛人果然有高招解决:
方法一:
var a = {
i: 1,
toString: function () {
return a.i++;
}
}
if (a == 1 && a == 2 && a == 3) {
console.log('OK');
}
运行结果是 : OK。
当两个类型不同时进行==比较时,会将一个类型转为另一个类型,然后再进行比较。
比如Object类型与Number类型进行比较时,Object类型会转换为Number类型。
对象转换为Number时,会尝试调用Object.valueOf()和Object.toString()来获取对应的数字基本类型。
方法二:
var a = [1, 2, 3];
a.join = a.shift;
if (a == 1 && a == 2 && a == 3) {
console.log('OK');
}
运行的结果是: OK
与上面这个类型转换一样,数组调用toString()会隐含调用Array.join()方法
而数组shift方法的用法:shift() 方法用于把数组的第一个元素从其中删除,并返回第一个元素的值。如果数组是空的,那么 shift() 方法将不进行任何操作,返回 undefined 值。请注意,该方法不创建新数组,而是直接修改原有的 arrayObject。
所以我们可以看到 a==1
时会调用toString(),toString()调用join(),join()等于shift,则转换为Number类型后为1.
方法三:
定义a的get
var val = 0;
Object.defineProperty(window, 'a', {
get: function () {
return ++val;
}
});
if (a == 1 && a == 2 && a == 3) {
console.log('OK');
}
运行的结果 : OK
使用一个get,让 a 的返回值为三个不同的值。
(a ==1 && a== 2 && a==3) 有可能是 true 吗?的更多相关文章
- Mapreduce的文件和hbase共同输入
Mapreduce的文件和hbase共同输入 package duogemap; import java.io.IOException; import org.apache.hadoop.co ...
- mapreduce多文件输出的两方法
mapreduce多文件输出的两方法 package duogemap; import java.io.IOException; import org.apache.hadoop.conf ...
- mapreduce中一个map多个输入路径
package duogemap; import java.io.IOException; import java.util.ArrayList; import java.util.List; imp ...
- Hadoop 中利用 mapreduce 读写 mysql 数据
Hadoop 中利用 mapreduce 读写 mysql 数据 有时候我们在项目中会遇到输入结果集很大,但是输出结果很小,比如一些 pv.uv 数据,然后为了实时查询的需求,或者一些 OLAP ...
- 【.net 深呼吸】细说CodeDom(8):分支与循环
有人会问,为啥 CodeDom 不会生成 switch 语句,为啥没生成 while 语句之类.要注意,CodeDom只关心代码逻辑,而不是语法,语法是给写代码的人用的.如果用.net的“反编译”工具 ...
- H5实现摇一摇技术总结
摇一摇遇到的问题 一.如何对摇晃效果进行反馈 刚开始的处理方式是,摇晃过程中不做任何处理,但后来反馈说这种效果不好,好像就没有摇动一样,如果声音也不响的话,就真的和什么都没发生一样. 后来想了想,加入 ...
- Fis3前端工程化之项目实战
Fis3项目 项目目录结构: E:. │ .gitignore │ fis-conf.js │ index.html │ package.json │ README.md │ ├─material │ ...
- Python中的多进程与多线程(一)
一.背景 最近在Azkaban的测试工作中,需要在测试环境下模拟线上的调度场景进行稳定性测试.故而重操python旧业,通过python编写脚本来构造类似线上的调度场景.在脚本编写过程中,碰到这样一个 ...
- Unity3d学习 相机的跟随
最近在写关于相机跟随的逻辑,其实最早接触相机跟随是在Unity官网的一个叫Roll-a-ball tutorial上,其中简单的涉及了关于相机如何跟随物体的移动而移动,如下代码: using Unit ...
- App开发:模拟服务器数据接口 - MockApi
为了方便app开发过程中,不受服务器接口的限制,便于客户端功能的快速测试,可以在客户端实现一个模拟服务器数据接口的MockApi模块.本篇文章就尝试为使用gradle的android项目设计实现Moc ...
随机推荐
- JS 正则表达式 控制文本框只能输入中文、英文、数字与指定特殊符号
JS 正则表达式 控制文本框只能输入中文.英文.数字与指定特殊符号(屏蔽表情输入) onkeyup:释放键盘事件 onpaste:粘贴事件 oncontextmenu :鼠标右击事件 只能输入中文: ...
- PL-VIO Docker测试
Docker里面测试PL-VIO的代码 PL-VIO贺一家大佬最近开源出来的一个点线特征融合的VIO代码,基于Vins-Mono,想要快速测试一下代码,所以就写了个简单的Dockerfile来测试一下 ...
- Fabric docker-compose volumes配置解析
chaincode: container_name: chaincode image: hyperledger/fabric-ccenv tty: true environment: - GOPATH ...
- XXE漏洞原理及利用
0x01概述 XXE(外部实体注入)是XML注入的一种,普通的XML注入利用面比较狭窄,如果有的话也是逻辑类漏洞.XXE扩大了攻击面. 当允许引用外部实体时,就可能导致任意文件读取.系统命令执行.内网 ...
- 最新 人民网java校招面经 (含整理过的面试题大全)
从6月到10月,经过4个月努力和坚持,自己有幸拿到了网易雷火.京东.去哪儿.人民网等10家互联网公司的校招Offer,因为某些自身原因最终选择了人民网.6.7月主要是做系统复习.项目复盘.LeetCo ...
- [Agc029A]Irreversible operation_逆序对
Irreversible operation 题目链接:https://atcoder.jp/contests/agc029/tasks/agc029_a 数据范围:略. 题解: 假设黑色是$1$,白 ...
- Vue ---- Vuex 的第一次接触
在 Vue.js 的项目中,如果项目结构简单, 父子组件之间的数据传递可以使用 props 或者 $emit 等方式 http://www.cnblogs.com/wisewrong/p/62660 ...
- 记录一次 hadoop yarn resourceManager无故切换的故障
某日 收到告警 线上集群rm切换 观察resourcemanager 日志报错如下 这行不明显 再看看其他日志报错 在 app attempt_removed 时候发生了空指针错误 break; ca ...
- select key from table 一直出错
key和keys 为mysql 关键字,数据库设计字段的时候尽量避免
- print() 默认是打印完字符串会自动添加一个换行符
可以使用end=" " 参数告诉 print() 用空格代替换行 for i in range(1,10): ... print(i,end=' ') ... 1 2 3 4 5 ...