`
李俊良
  • 浏览: 143921 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

true 和 false也能相等

 
阅读更多

/**

以下让大家看到一个true和false相等的问题研究

*/

//先看第一个东西

var b = Boolean([]);
console.log(b);
console.log([])

//得到的结果是true,足以说明空数组在进行布尔转化时会转化为true

//那么自然可以得到结论![]应该是false,验证一下

console.log(![])//确实是false

//接下来看下面的东西,诡异的结果出现了

console.log([] == ![]);// 输出结果为true;

/*
是不是无法理解上面的结果,一个true的东西和一个为false的比较居然是相等的。
*/

 现在开始来解释原因

 

[] == ![]比较的步骤如下:

首先![]进行运算,那么结果是0

等于说就变成了[] == false的判断

 

然后你要是查看犀牛书上面的关于==号的比较的解释

会发现,对象和数字比较的方式

会把对象进行toString()转化然后再比较

那么[].toString() 就是""

 

"" == false

这种比较大家就熟悉了

返回就是true

 

 

分享到:
评论

相关推荐

    JS 宽松相等和严格相等

    严格相等运算符(===)则不进行任何类型转换,只有当两个值的类型和值都完全相同才会返回true。例如: ```javascript 0 === "" // false,类型不同 true === 1 // false,类型不同 ``` 严格相等运算符的使用可以...

    JavaScript中0、空字符串、’0’是true还是false的知识点分享

    “” == false 结果是true 在js中空字符串与0相等 即空字符串等于false 0 == false 结果是tue 比较的时候 布尔类型的转换成number类型 false 为0 true 为1 “0” == fase 结果是true 字符串准成number  ...

    javascript相等运算符与等同运算符

    3. **布尔值**:布尔值`true`和`false`只能与它们自身进行严格相等的比较。 4. **`null`与`undefined`**:尽管`null`和`undefined`在`==`中被认为是相等的,但在`===`中,它们被视为不相等,因为它们的类型不同。 5....

    PHP判断和比较null、0、''、false的正确姿势.docx

    在松散比较中,空字符串与0和false相等,因为在逻辑上它们都代表"假"。但在严格比较中,它们各自都与自身相等。 4. **false**:false是一个布尔值,表示逻辑上的假。在松散比较中,false与0和''相等,因为它们在...

    python不相等的两个字符串的 if 条件判断为True详解

    在Python编程语言中,字符串是常见且重要的数据类型。在处理字符串时,我们经常...记住,Python中的布尔值不仅仅是`True`和`False`,其他值在布尔上下文中的行为也需要了解,这样才能编写出更加健壮和可预测的代码。

    Excel判断两列是否相等和是否包含的公式

    这个公式会检查A2和B2单元格的值是否相等,并返回逻辑值`TRUE`(如果相等)或`FALSE`(如果不等)。然后你可以将该公式向下拖动填充到整个C列,以此判断所有对应行的数据。 接下来,我们来看"是否包含"的问题。如果...

    C#如何判断两个文件是否完全相等

    // 如果所有字节都相等,返回true return (file1Byte - file2Byte) == 0; } ``` 在这段代码中,`FileStream`类用于创建文件流对象,从而能够读取文件的字节。`ReadByte()`方法用于从文件流中读取一个字节。通过`...

    来自 2 个矩阵的 True Positives、False Positives、True Negatives、False Negatives:返回 TP、FP、TN、FN 给定 2 个用 1 和 0 填充的矩阵-matlab开发

    - 这个简单的函数接受 2 个由 1 和 0 填充的大小相等的矩阵,并返回真阳性、假阳性、真阴性、假阴性的数量,以便计算精度和召回率- 第一个矩阵是真正的矩阵- 第二个矩阵是从使用的算法填充的- 基于二进制分类返回...

    Java中String判断值为null或空及地址是否相等的问题

    在Java编程中,字符串(String)是非常...同时,了解字符串对象的内存地址和内容相等性的差异,可以帮助我们更好地理解和调试程序。在实际开发中,应始终确保对`null`进行检查,以防止未预期的`NullPointerException`。

    js中怎么判断两个字符串相等的实例.docx

    如果类型不同,即使值相等,也会返回`false`: ```javascript var str1 = "123456"; // 字符串 var num2 = 123456; // 整型 console.log(str1 === num2); // 输出:false ``` 在这里,`str1`和`num2`的值虽然相等,...

    浅谈Python里面None True False之间的区别

    同样,`3 * 0.1`也会产生一个类似的近似值,这两个近似值不相等,因此`0.3 == 3 * 0.1`返回`False`。 当打印`0.1`时,Python会显示一个经过舍入的可读版本,这并不意味着这就是存储的精确值。为了查看浮点数的实际...

    JavaScript中判断两个字符串是否相等的方法

    这意味着只有当两个操作数的类型和值都相等时,使用“===”运算符比较的结果才会是true。因此,“===”更可靠,通常推荐使用这个运算符来避免类型转换可能带来的问题。 举个例子,假设我们有两个字符串变量strA和...

    Javascript学习笔记之相等符号与严格相等符号

    对象与基本数据类型的比较会使得对象被转换为基本数据类型,如null和undefined使用相等符号比较时相等(true)。 相对地,严格相等符号(===)由三个等号组成,它用于进行值和类型的比较。与相等符号不同的是,严格...

    Python基础教程详解(第五十四课)-真值表.doc

    在Python编程语言中,逻辑运算符是不可或缺的一部分,它们用于处理布尔值(True或False)并进行条件判断。本教程的第54课主要聚焦于逻辑运算中的真值表,这是理解逻辑运算行为的关键工具。真值表列出了一种逻辑运算...

    python 两个一样的字符串用==结果为false问题的解决

    ### Python中两个看似相同的字符串用`==`比较结果为False的问题及解决方案 在Python编程过程中,我们经常会遇到需要比较两个字符串是否相同的情况。通常情况下,我们使用`==`操作符来实现这一目标。然而,在某些...

    matlab_检查任何类型的两个变量是否相等。如果差值小于设定公差,则认为浮点数相等

    当`a`和`b`之间的绝对差值小于`tol`时,函数返回`true`,表示它们在容差范围内被视为相等;否则返回`false`。这种比较方式比简单的`isequal`函数更为灵活,因为`isequal`函数直接比较两个数是否完全相等,不考虑...

    JAVA中实现“相等”比较的深入分析.pdf

    而equals()方法通常用于比较两个对象的内容是否相等,这是通过覆盖Object类中的equals()方法来实现的,使得类的实例在内容上相等时返回true,否则返回false。当我们在自定义类中使用equals()方法时,应遵循一些约定...

    javascript中的相等操作符(==与===区别).docx

    - 示例:`1 === 1` 返回 `true`,`1 === 1.0` 返回 `true`(整数与浮点数视为相等),`1 === 1.2` 返回 `false`。 4. **特殊类型的比较**: - `null` 和 `undefined` 只有在自身之间比较时才返回 `true`。 - ...

    判断List和Map是否相等并合并List中相同的Map

    HashMap和HashTable的相等判断需要满足两个条件:(1)两个key通过equals()方法比较返回true,两个key的hashCode值也相等;(2)value与另外一个对象通过equals()方法比较返回true即可。TreeMap的相等判断通过compareTo...

    比较map对象之间的工具类,特殊场景,value的string类型相等,认同为相等(附源码)

    然后,通过比较两者的大小来判断,如果大小不同,那么它们也不能相等。 接下来,遍历第一个Map的所有条目,对于每个条目,获取它的键和值。然后,从第二个Map中通过键获取对应的值。如果在第二个Map中找不到对应的...

Global site tag (gtag.js) - Google Analytics