gpt4 book ai didi

javascript - typeof a 的解释是什么,其中 var a = 2 + [] 是字符串?

转载 作者:行者123 更新时间:2023-12-01 00:51:42 25 4
gpt4 key购买 nike

我正在查看 a 的类型,其中 var a = 2 + []。我预计答案是数字类型的 2,但我得到的是字符串类型的“2”。但是,当我评估 var b = 2 - [] 时,我得到的值为数字类型的 2。有人可以帮助我理解这种行为吗?

const arr = [];

const a = 2 + arr;
console.log(a); // '2'
console.log(typeof a) // string

const b = 2 - arr;
console.log(b) // 2
console.log(typeof b); // number

//I expected the value a to be 2 of type
//number just as b

//If I toggle the boolean value of arr,
//both a and b evaluates to 2 of
//type number

最佳答案

具有两个操作数的

+ 是“addition operator”,它可以根据其操作数进行数学加法或字符串加法(连接)。

+ 的任何操作数是对象时,JavaScript 引擎会将对象转换为基元。在你的例子中,数组是一个对象。将数组转换为基元会生成一个字符串(就好像您调用了它们的 toString 方法,该方法基本上执行 .join() 操作)。那么 + 运算符正在处理一个数字和一个字符串。当其中一个操作数是字符串时,+ 会将另一个操作数转换为字符串,因此您将得到 "2" 结果。即:

  • 2 + [] 变为
  • 2 + "" 变为
  • "2"+ "" 这是
  • “2”
带有两个操作数的

- 是“subtraction operator ”,它非常不同。它仅用于数学,没有任何字符串含义。这意味着它将其参数转换为数字。将数组转换为数字涉及首先将其转换为字符串,然后将字符串转换为数字。 [] 变为 "",并转换为 0。所以:

  • 2 - [] 变为
  • 2 - "" 变为
  • 2 - 0 这是
  • 2

关于javascript - typeof a 的解释是什么,其中 var a = 2 + [] 是字符串?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56922802/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com