Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/string/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
意外的字符串与++;在JavaScript中_Javascript_String_String Concatenation - Fatal编程技术网

意外的字符串与++;在JavaScript中

意外的字符串与++;在JavaScript中,javascript,string,string-concatenation,Javascript,String,String Concatenation,今天,我在使用+操作符时发现JavaScript出现了一个意外行为: "a" + "" //returns "a" "a" + + "" //returns "a0" 为什么第二个表达式产生“a0”?这与“a”+(+) +”将空字符串强制转换为数字,并将为空字符串返回0。 类似地,+“22”返回数字22 现在你有了“a”+0 与数字连接的字符串返回字符串,并且在第二行中以'a0'结束,这是使用+运算符对数字的强制 所以实际上,+“正在将”转换为一个数字(->0),然后将结果连接到字符串“a”

今天,我在使用
+
操作符时发现JavaScript出现了一个意外行为:

"a" + "" //returns "a"
"a" + + "" //returns "a0"
为什么第二个表达式产生
“a0”

这与
“a”+(+)

+”
将空字符串强制转换为数字,并将为空字符串返回
0
。 类似地,
+“22”
返回数字
22

现在你有了
“a”+0


与数字连接的字符串返回字符串,并且在第二行中以
'a0'

结束,这是使用
+
运算符对数字的强制

所以实际上,
+“
正在将”转换为一个数字(->0),然后将结果连接到字符串“a”


因此,结果字符串将是:“a0”

符号
+
用于多个运算符和操作:

  • a+b
    其中
    a
    b
    是执行串联的字符串。如果另一个值不是字符串,则将其转换为字符串
  • a+b
    其中
    a
    b
    是数字相加
  • ++a
    a++
    执行递增(递增1)
  • +a
    是一元正运算符,它接受一个数字并返回不变的值。这有时被程序员用作将字符串转换为数字的快捷方式
当其中一个操作遇到其他或混合数据类型时,JavaScript会自动转换类型。对象和数组倾向于自动转换为字符串,并且连接优先于添加。这就是为什么
number+object
返回一个字符串,如果您希望
+
表示加法,那么一开始可能没有意义


总之,口译员根据上下文猜测操作。如果您编写
“a”++“
,它会在一行中看到两个
+
运算符。因为它们不能都是二进制运算符,所以它知道第二个
+
是一元
+
,它将字符串转换为数字。空字符串会自动转换为
0
,因为一元
+
仅与数字一起工作,而另一个
+
会看到一个字符串和一个数字。由于有一个字符串,它将另一个操作数转换为字符串并执行串联。

除了作为串联和加法运算符外,
+
运算符也是一元运算符(即对单个操作数进行操作的运算符)。当用作一元运算符(如
+value
)时,JavaScript将操作数的值转换为数字类型。例如:

+"4" // returns 4
+"42" // returns 42
+"Hello" // returns NaN (Not A Number), i.e. the String could not be converted into Number
+"" //returns 0; special case
因此,表达式
“a”+”
的计算方式类似于
“a”+0
(返回
“a0”

删除空白,它将不起作用并引发错误。

中,“a”+“
+”
被视为
+(“”)
,其计算结果为
0
。简单地说,第一个
+
用于concat运算符,第二个用作
强制链接:P上的一元运算符(您并不孤单)