如何让a==1&&a==2&a==3成立
Posted hyting
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如何让a==1&&a==2&a==3成立相关的知识,希望对你有一定的参考价值。
/*
* == 进行比较的时候,如果左右两边数据类型不一样,则先转换为相同的数据类型,然后在进行比较
* 1、{} == {} false 两个数据进行比较,比较的是堆内存的地址
* 2、null == undefined true | null === undefined false
* 3、NaN == NaN false NaN 和谁都不相等
* 4、[12] == "12" 对象和字符串比较,是把对象 toString() 转换为字符串之后再进行比较的
* 5、剩余所有情况在进行比较的时候,都是转换为数字(前提数据类型不一样)
* 对象转数字:先转换为字符串,然后在转换为数字
* 字符串转数字:只要出现一个非数字字符,结果就是 NaN
* 布尔转数字: true -> 1 false -> 2
* null 转数字:0
* undefined 转数字:NaN
*
* [12] == true --> Number([12].toString()) == 1 => false
* [] == false --> 0 == 0 => true
* [] == 1 --> 0 == 1 => false
*
* ---------------------------------------------------
*/
// 一、=> 对象和数字比较:先把对象 .toString() 变为字符串,然后再转换为数字
var a = {
n: 0,
//=> 私有的属性方法
toString: function () {
return ++this.n;
}
};
//a.toString(); //=> 此时调用的就不再是 Object.prototype.toString 了,调用的是私有的
if (a == 1 && a == 2 && a == 3) {
console.log(‘yes!‘)
}
// 二、 => shift:删除数组第一项,把删除的内容返回,原有数组改变
let a = [1, 2, 3];
a.toString = a.shift;
if (a == 1 && a == 2 && a == 3) {
console.log(‘yes!‘)
}
/*
* ES6 中新增加的一些方法
* String.fromCharCode([n]) <=> "z".charCodeAt()
* Array.from()
* Array.isArray()
* Object.create([Obj])
* Object.defineProperty()
*/
// 三、 => Object.defineProperty 监听当前对象某个属性的各种情况
Object.defineProperty(window, ‘a‘, {
get: function () {
this.value ? this.value++ : this.value = 1;
return this.value;
}
});
if (a == 1 && a == 2 && a == 3) {
console.log(‘yes!‘)
}
以上是关于如何让a==1&&a==2&a==3成立的主要内容,如果未能解决你的问题,请参考以下文章
如何让 a == 1 && a == 2 && a == 3同时成立?
前端面试 JavaScript— 如何让if(a == 1 && a == 2)条件成立?