为什么“ [] == true”和“![] == true”都评估为false?

judonguyen

我有两个这样的说法。他们为什么都评价false

console.log([] == true)
console.log(![] == true)

如果[] == true不是false应该![] == true导致的true

尼克·祖姆

这是胁迫的方式

强制的第一步是将任何非原始类型转换为原始类型,然后使用一组规则将左侧,右侧或两侧转换为相同类型。您可以在此处找到这些规则

在您的情况下[] == true,将通过以下4个步骤:

  1. [] == true
  2. [] == 1
  3. "" == 1
  4. 0 == 1

而基于操作者的优先级!![] == true这样的表达式转换为首先执行false == true这显然false

您可以尝试Felix Kling现场演示以更好地了解相同性运算符的工作原理。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

为什么mysql评估(TRUE或TRUE和FALSE)为true?

来自分类Dev

为什么{} == false评估为false,而[] == false评估为true?

来自分类Dev

为什么`false && true || true`评估为true?

来自分类Dev

为什么 (true || false && false) 评估为 true?

来自分类Dev

当 {a statement that is equal to True} == True 评估为 false 时,为什么 True == True 评估为 True?

来自分类Dev

为什么“ False is False is False”评估为“ True”?

来自分类Dev

为什么`[] == false`是true,而只是`[]`评估为true?

来自分类Dev

为什么“” <{}评估为true?

来自分类Dev

为什么(null == false)和(null == true)都返回false?

来自分类Dev

为什么(true && {})评估为{},而({} && true)评估为true?

来自分类Dev

“ 3” <“ 4”评估为True,但“ 3” <“ 10”评估为False。为什么?

来自分类Dev

为什么NotImplemented评估为True?

来自分类Dev

为什么(false和false或true)返回true

来自分类Dev

FALSE和TRUE的奇怪定义,为什么?

来自分类Dev

为什么(不是None)== True评估为True?

来自分类Dev

为什么$ false -eq“”为true?

来自分类Dev

为什么新的Boolean(false)为true?

来自分类Dev

为什么我的变量同时为true和true?

来自分类Dev

如果1 =='1'// true和1 == true // true,那么为什么1 =='true'// false

来自分类Dev

如果([[] == false)为true,为什么[[] || true)导致[]?

来自分类Dev

批处理脚本:为什么此条件评估为true?

来自分类Dev

为什么“ someString” == 0在PHP中评估为true

来自分类Dev

为什么对空的PriorityQueue的布尔值评估为True?

来自分类Dev

为什么这个 if 语句在 bash 中被评估为 true?

来自分类Dev

为什么“ True or False”比“ False或True”要快?

来自分类Dev

为什么(false == 0)是TRUE?

来自分类Dev

为什么print('a'>'b')为false,而print('a'>'A')为True?

来自分类Dev

相同的RegExp交替返回true和false。为什么?

来自分类Dev

相同的RegExp交替返回true和false。为什么?

Related 相关文章

  1. 1

    为什么mysql评估(TRUE或TRUE和FALSE)为true?

  2. 2

    为什么{} == false评估为false,而[] == false评估为true?

  3. 3

    为什么`false && true || true`评估为true?

  4. 4

    为什么 (true || false && false) 评估为 true?

  5. 5

    当 {a statement that is equal to True} == True 评估为 false 时,为什么 True == True 评估为 True?

  6. 6

    为什么“ False is False is False”评估为“ True”?

  7. 7

    为什么`[] == false`是true,而只是`[]`评估为true?

  8. 8

    为什么“” <{}评估为true?

  9. 9

    为什么(null == false)和(null == true)都返回false?

  10. 10

    为什么(true && {})评估为{},而({} && true)评估为true?

  11. 11

    “ 3” <“ 4”评估为True,但“ 3” <“ 10”评估为False。为什么?

  12. 12

    为什么NotImplemented评估为True?

  13. 13

    为什么(false和false或true)返回true

  14. 14

    FALSE和TRUE的奇怪定义,为什么?

  15. 15

    为什么(不是None)== True评估为True?

  16. 16

    为什么$ false -eq“”为true?

  17. 17

    为什么新的Boolean(false)为true?

  18. 18

    为什么我的变量同时为true和true?

  19. 19

    如果1 =='1'// true和1 == true // true,那么为什么1 =='true'// false

  20. 20

    如果([[] == false)为true,为什么[[] || true)导致[]?

  21. 21

    批处理脚本:为什么此条件评估为true?

  22. 22

    为什么“ someString” == 0在PHP中评估为true

  23. 23

    为什么对空的PriorityQueue的布尔值评估为True?

  24. 24

    为什么这个 if 语句在 bash 中被评估为 true?

  25. 25

    为什么“ True or False”比“ False或True”要快?

  26. 26

    为什么(false == 0)是TRUE?

  27. 27

    为什么print('a'>'b')为false,而print('a'>'A')为True?

  28. 28

    相同的RegExp交替返回true和false。为什么?

  29. 29

    相同的RegExp交替返回true和false。为什么?

热门标签

归档