为什么Array.length- - 不减1?

问题描述 投票:0回答:4

当我跑步时:

var a = ["a", "b", "c"] console.log(a.length--)
它打印 3,但是当我运行时:
var a = ["a", "b", "c"] console.log(a.length-1)
它打印 2。为什么?减1不是和减1一样吗? 预先感谢。

javascript arrays decrement
4个回答
1
投票

减量运算符 (--) 对其操作数进行减量(减一)并返回一个值。

如果使用后缀,操作数后带有运算符(例如,x--),减量运算符将减量并返回减量前的值。

如果使用前缀,操作数之前带有运算符(例如,--x),则减量运算符进行减量并返回减量后的值。

let x = 3; const y = x--; console.log(`x:${x}, y:${y}`); // expected output: "x:2, y:3" let a = 3; const b = --a; console.log(`a:${a}, b:${b}`); // expected output: "a:2, b:2"


1
投票
它确实从长度中减一,但发布的代码并没有尝试观察结果:长度为 2 的数组。

var a = ["a", "b", "c"]; console.log(a.length--) console.log(a);


0
投票
在 Java 脚本中,您有 2 个不同的快捷方式将 int 减一。第一个是您在这里使用的:val--,第二个是--val。 如果你单独使用它们中的任何一个,意味着你有一行只包含 val - 就是这样,它们会做同样的事情(减一),但如果你将它们与其他东西一起使用(例如 console.log),它们会产生不同的效果。 如果您使用 val-- 程序将首先记录 val,然后减一。但如果你使用 --val 它会首先减一,然后记录新值。

展示此内容的代码:

Var a = 3; Var b = 3; Console.log(a--); //will print 3 Console.log(--b); //will print 2 Console.log(a); //prints 2 Console.log(b) //prints 2
换句话说, val-- 的作用是从下一行开始减一


0
投票
实际上,递减运算符不会递减返回的长度值,它会变异(弹出)数组(然后返回变异数组的长度值)

(--)运算符的位置表示何时进行计算,其含义是:

    在前面时:数组将 .pop() - 删除最后一个值 - 然后返回数组的长度
  • 结束时:它返回数组的长度,然后数组将 .pop() - 删除最后一个值
参见示例

var c = [1,2,3,4,5]; console.log(c.length--); // will return length od array (5), then pop() console.log(c); // now reversed console.log(--c.length); // will pop(),then return length od array (3) console.log(c);

© www.soinside.com 2019 - 2024. All rights reserved.