最近在恶补 JavaScript,对运算符这个地方不太理解

2022-04-12 14:49:42 +08:00
 LxnChan

不是很理解 js 里面的递增的逻辑,这个递增的步长是多少啊

5085 次点击
所在节点    JavaScript
47 条回复
kop1989smurf
2022-04-12 14:52:35 +08:00
指的是最后两行为何相差 2 ?

首先,这并不是 JS 的知识。

x++是先附值再累加。
++x 是先累加再附值。
gdrk
2022-04-12 14:54:27 +08:00
++在后只是执行了这次运算,不会影响这次输出。你在 num3++后再 log 一次 num3 就明白了。
kop1989smurf
2022-04-12 14:55:41 +08:00
如果将最后两行逻辑拆开,那么倒数第二行(console.log(num3++))的逻辑是:

输出 num3;
num3 = num3 + 1;
LxnChan
2022-04-12 14:55:47 +08:00
@kop1989smurf 那这个先赋值再累加有什么意义吗?输出的应该还是变量的值吧,另外累加这个逻辑是怎么样的,每次加 1 吗还是什么值
LxnChan
2022-04-12 14:57:19 +08:00
@gdrk 也就是说在倒数第二行的时候 num3 的值就已经是 22 了吗?
LxnChan
2022-04-12 14:58:29 +08:00
@gdrk 理解了,谢谢。
wangtian2020
2022-04-12 15:01:29 +08:00
let i=0
i++
console.log(i)



let i=0
++i
console.log(i)

的运算结果是一样的。
通常都是这种写法。
把 变量++ 写在表达式里的意义一般就是为了炫酷,自己写代码的时候,如果不知道代码的运行结果是什么,那么最好就不要这么写。


运算符 ++ 和 -- 可以置于变量前,也可以置于变量后。

当运算符置于变量后,被称为“后置形式”:counter++。
当运算符置于变量前,被称为“前置形式”:++counter 。
两者都做同一件事:将变量 counter 与 1 相加。

https://zh.javascript.info/operators
ChefIsAwesome
2022-04-12 15:04:38 +08:00
顺序问题。为了不绕自己,不绕他人,拒绝使用 ++ 操作符就完事了。
agdhole
2022-04-12 15:05:13 +08:00
这玩意了解下就行,不要在自己的代码里面写,折磨自己和同事😂
shintendo
2022-04-12 15:15:18 +08:00
相信我,你不知道这个,写出来的代码比较好
Leviathann
2022-04-12 15:16:57 +08:00
这是当年还没有表达式化控制流这个思想的时代为了方便在语法上开洞的行为
weixiangzhe
2022-04-12 15:45:16 +08:00
++ 已经是垃圾,不要用就完了
i += 1 清晰明了
retrocode
2022-04-12 16:15:51 +08:00
LxnChan
2022-04-12 16:38:27 +08:00
@retrocode 啊这,我试了一下居然还是真的🤣 https://flow.lxnchan.cn/files/pic/pic20220412d.png
@weixiangzhe okok
@Leviathann 开洞是什么
@shintendo @agdhole 哈哈哈

啊最主要的是看 js 代码完全不知道结果是啥
gogogo1203
2022-04-12 16:48:28 +08:00
vs code 有一个 js playground 的插件 quokka. 有很多团队的 eslint rule 直接不让用++
hazardous
2022-04-12 16:55:37 +08:00
别的语言不也是这样的么。

其实这个不算奇淫巧计了,行为结果是固定的,我觉得写代码时可以用。

要避免的是 "func(a++, ++a)" 这种
pengtdyd
2022-04-12 16:57:49 +08:00
JS 的运算是玄学,哈哈哈
lvsijun
2022-04-12 16:58:05 +08:00
@LxnChan 先赋值后累加 一般用于循环操作 for(let i = 0 ; i<10; i++){ console.log(i)} //循环十次
deplivesb
2022-04-12 17:07:12 +08:00
别 tm 的++ 了,+= 不香么,非要搞自己也搞别人
NCry
2022-04-12 17:30:03 +08:00
除了 for 循环里面,基本不用 ++ 了。另外这个两个顺序差异不止存在于 js ,其他语言也有的吧。

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/846528

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX