Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/429.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_Node.js - Fatal编程技术网

该++;javascript中的运算符

该++;javascript中的运算符,javascript,node.js,Javascript,Node.js,当我有一个加号时,我得到了错误的答案 var b = [069]; var total = 0; total = total + b console.log(total) // total = 069 但是,当我加上第二个加号时,方程看起来是这样的 total = total + + b // total = 69 我得到了69的正确答案。以上只是我的问题的一个简化例子 这很好,但是在使用JSHint时,我得到一个警告说 confusing pluses 不使用++如何才能得到正确答案

当我有一个加号时,我得到了错误的答案

var b = [069];
var total = 0;

total = total + b
console.log(total) // total = 069
但是,当我加上第二个加号时,方程看起来是这样的

total = total + + b  // total = 69
我得到了69的正确答案。以上只是我的问题的一个简化例子

这很好,但是在使用JSHint时,我得到一个警告说

confusing pluses

不使用++如何才能得到正确答案?另外,这个操作符叫什么?

不幸的是,Javascript做了很多隐式转换。。。用你的代码

b + [69]
发生的情况是
[69]
(包含数字
69
的数组)被转换为字符串,成为
“69”
。然后将其连接到
b
,在本例中,它也会转换为字符串
“0”
。因此,结果是“069”

但是,如果您在数组前面添加另一个一元
+
,字符串将转换回一个数字,您将得到一个数字结果添加到
b

0 + [69] → 0 + "69" → "0" + "69" → "069"
0 + + [69] → 0 + + "69" → 0 + 69 → 69
确切的规则相当复杂,但考虑到二进制
+
的简化形式,使用Javascript可以提高效率:

  • 如果两者都是数字,则结果是数字相加
  • 否则,它们将同时转换为字符串,结果是串联
一件有点令人惊讶的事情是,数组到字符串的隐式转换就是元素到字符串的转换,在元素之间添加
,“
作为分隔符


这意味着单元素数组
[1]
将转换为
“1”
。。。这显然意味着疯狂的后果,比如
[1]==1

将我的评论作为答案发布


+
如果我是正确的,则变量前面的
+
会将其转换为一个数字

在控制台中尝试以下操作:

“5”
将返回
“5”
(字符串),其中

+“5”
将返回
5
(数字)

您可以使用
total=parseInt(total)+parseInt(b)
以获得正确的结果,因为
parseInt()
将尝试从它获得的任何输入参数中生成一个数字


从理论上讲,您可以将
总数
解析为一个数字,但它很容易出现类似
“1”+“0”=“10”
这样的错误,导致
10
,从数学上讲,它应该是
1
[069]
是一个数组;您正在将
b
初始化为数组值,然后尝试将其与
+
运算符一起使用。你期望它做什么?为什么不干脆
var b=69
+
如果我是正确的,则变量前面的代码将转换为数字。在控制台中尝试此操作
“5”
将返回
“5”
,其中
+“5”
将返回
5
。您可以使用
total=parseInt(total)+parseInt(b)以获得正确的结果。这似乎是完美的答案材料@AlexSzabó,试试看:)如果你尝试使用
total+-b
,也可以得到相同的答案。如果使用的是
+-
,则不需要运算符之间的空格。由于
++
被视为增量运算符,因此需要将空格设置为
++
。将
+
-
放在符号前,以转换为整数。“不幸的是”您可能希望消除答案的偏差:P@EmileBergeron答案的先进程度与OP的熟练程度无关。他们问了一个问题,他们得到了一个答案。这是无关紧要的。你只是假设行动知识吗?@Emilebergron不幸的是,这真的不重要。这是对这个问题的一个非常正确的回答。你不能为了迎合OP而减少答案,可能会弄错答案。