Javascript 忽略括号外的操作

Javascript 忽略括号外的操作,javascript,arrays,Javascript,Arrays,//为什么js忽略括号外的负数?为什么它是9而不是4?这个(++x)-1将得到0,并且x在对该语句求值后将是1,因为您已将其递增1,并将其赋值为0 所以这个arr[x](在语句document.write(arr[x]);)实际上是arr[1],并且arr[1]被赋值为9 关于任务: var x = 0; var arr = [4,9,2]; arr[x] = (++x)-1; document.write(arr[x]);//9 现在,数组的第一个元素(索引为0)的值将被赋值为0。这就

//为什么js忽略括号外的负数?为什么它是9而不是4?

这个
(++x)-1
将得到0,并且
x
在对该语句求值后将是1,因为您已将其递增1,并将其赋值为0

所以这个
arr[x]
(在语句
document.write(arr[x]);
)实际上是
arr[1]
,并且
arr[1]
被赋值为9

关于任务:

var x = 0;

var arr = [4,9,2];

arr[x] = (++x)-1;

document.write(arr[x]);//9
现在,数组的第一个元素(索引为0)的值将被赋值为0。这就是为什么如果打印arr,您将获得以下输出:

arr[x] = (++x)-1;
(++x)-1
将导致0,并且在对该语句求值后
x
将为1,因为您已将其递增1,并将其赋值为0

所以这个
arr[x]
(在语句
document.write(arr[x]);
)实际上是
arr[1]
,并且
arr[1]
被赋值为9

关于任务:

var x = 0;

var arr = [4,9,2];

arr[x] = (++x)-1;

document.write(arr[x]);//9
现在,数组的第一个元素(索引为0)的值将被赋值为0。这就是为什么如果打印arr,您将获得以下输出:

arr[x] = (++x)-1;
你写信给

[0,9,2]
然后你写下来

arr[x]  // which is arr[0]
(++x)-1; // 1-1 = 0, x = 1
为什么js忽略括号外的负数

所以不,js不会忽略负号。也许可以尝试理解前缀
++
运算符,而不使用数组,因为在本例中它们会让您有点困惑

例如:

document.write(arr[x]); //arr[1] which is 9
你写信给

[0,9,2]
然后你写下来

arr[x]  // which is arr[0]
(++x)-1; // 1-1 = 0, x = 1
为什么js忽略括号外的负数

所以不,js不会忽略负号。也许可以尝试理解前缀
++
运算符,而不使用数组,因为在本例中它们会让您有点困惑

例如:

document.write(arr[x]); //arr[1] which is 9

基本上这是带前缀的

与使用带有后缀增量的x相同

++x - 1

基本上这是带前缀的

与使用带有后缀增量的x相同

++x - 1
arr[0]=0
,此处
x
增加1,因此,
x
=1,(1)-1=0

arr[1]
将打印9,因为
x
=1,您正在访问阵列 索引为1的元素

document.write(arr)
它将打印
[0,9,2]
,因为第一个 数组的元素(索引为0)将被赋值为0

arr[0]=0
,此处
x
增加1,因此,
x
=1,(1)-1=0

arr[1]
将打印9,因为
x
=1,您正在访问阵列 索引为1的元素

document.write(arr)
它将打印
[0,9,2]
,因为第一个 数组的元素(索引为0)将被赋值为0


但是为什么呢?arr[x]不应该等于整个操作的结果吗?@hawkeye871对不起,我没有得到你的评论?您所说的
arr[x]
将等于整个运算的结果是什么意思?@hawkeye871,您已经更改了数组中第一个元素的值:所以,4现在是0。。。(如果这是故意的话)但是x是1(你已经增加了它),数组[1]当然是9。但是为什么呢?arr[x]不应该等于整个操作的结果吗?@hawkeye871对不起,我没有得到你的评论?您所说的
arr[x]
将等于整个运算的结果是什么意思?@hawkeye871,您已经更改了数组中第一个元素的值:所以,4现在是0。。。(如果是有意的话)但是x是1(您已经增加了它),数组[1]当然是9。请不要使用这种样式。它容易出错且难以阅读。请不要使用此样式。它容易出错,而且很难阅读。@hawkeye871没问题,很乐意阅读help@hawkeye871没问题,很乐意帮忙