当前位置: 首页 > 编程笔记 >

JS中的==运算: [''] == false —>true

施兴言
2023-03-14
本文向大家介绍JS中的==运算: [''] == false —>true,包括了JS中的==运算: [''] == false —>true的使用技巧和注意事项,需要的朋友参考一下

计算下面表达式的值:

[''] == false

首先,两个操作数分别是对象类型、布尔类型。根据图1,需要将布尔类型转为数字类型,而false转为数字的结果是0,所以表达式变为:

[''] == 0

两个操作数变成了对象类型、数字类型。根据图1,需要将对象类型转为原始类型:

首先调用[].valueOf(),由于数组的valueOf()方法返回自身,所以结果不是原始类型,继续调用[].toString()。

对于数组来说,toString()方法的算法,是将每个元素都转为字符串类型,然后用逗号','依次连接起来,所以最终结果是空字符串'',它是一个原始类型的值。

此时,表达式变为:

'' == 0

两个操作数变成了字符串类型、数字类型。根据图1,需要将字符串类型转为数字类型,前面说了空字符串变成数字是0。于是表达式变为:

0 == 0

到此为止,两个操作数的类型终于相同了,结果明显是true。

 类似资料:
  • 本文向大家介绍js中位运算的运用实例分析,包括了js中位运算的运用实例分析的使用技巧和注意事项,需要的朋友参考一下 我们可能很少在编程中用位运算,如果没深入学习,可能也很难理解。平时的数值运算,其实是要先转换成二进制再进行运算的,而位运算就是直接进行二进制运算,所以位运算的执行效率肯定是更高的。下面通过一些实例来加深对位运算的理解。 按位与(&) &&运算符我们都知道,只有两个都为真,结果才为真。

  • 问题内容: 我们有Null合并运算符,可以按以下方式使用 我们可以在React JS中做同样的事情吗? 我发现我们可以使用&&运算符 在 address.ts 文件中 我需要像.net功能那样在带有React JS的打字稿中是可能的吗? 就像是: 问题答案: 这是传说中的第16期在TypeScript中建议的功能 在此功能的ECMAScript规范确定之前,不会将其引入TypeScript中,因为

  • 本文向大家介绍浅谈JS中逗号运算符的用法,包括了浅谈JS中逗号运算符的用法的使用技巧和注意事项,需要的朋友参考一下 注意: 一、由于目前正在功读JavaScript技术,所以这里拿JavaScript为例。你可以自己在PHP中试试。 二、JavaScript语法比较复杂,因此拿JavaScript做举例。 最近重新阅读JavaScript权威指南这本书,应该说很认真的阅读,于是便想把所学的东西多记

  • 为什么当使用括号时,这些语句会像预期的那样工作: 但是当没有括号时,它返回?

  • 字符串的运算符号怎么转换成js的表达式

  • 问题内容: 使用括号时,这些语句为什么能按预期工作: 但是 ,如果没有括号,它会返回吗? 问题答案: 基于有关操作符优先级的python 文档 : 请注意,比较,成员资格测试和身份测试均具有相同的优先级,并且具有“比较”部分中所述的从左到右的 链接 功能。 因此,实际上您有一个链接语句,如下所示: 您可以假定中心对象将在2个操作和其他对象之间共享(在这种情况下为False)。 并且请注意,对于所有

  • 问题内容: 我试过运行这段代码: 并输出 False 。我认为Python会将任何有价值的东西都视为 True 。为什么会这样呢? 问题答案: 从 6.11开始。 布尔运算: 在布尔运算的上下文中,以及当控制流语句使用表达式时,以下值将解释为false:False,None,所有类型的数字零以及空字符串和容器(包括字符串,元组,列表,字典) ,集合和Frozensets)。所有其他值均解释为tru

  • 问题内容: 如果我这样做: 那又回来了。仅仅是因为在列表中。 但是,如果我这样做: 那又回来了。而等于: 为什么? 问题答案: 运算符优先级 2.x,3.x。的优先级低于的优先级。因此,它等效于: 这就是你想要的: 正如@Ben指出的那样:建议从不写作,更喜欢。前者使它看起来像一个函数调用,而它却是一个运算符,而不是一个函数。