Ale*_*nik -7 javascript operators
看下面这个小片段的js:
var a = 1;
if(! (--a)) { // when i say --a i did't mean to say "change the value of a" i just meant to say "without manupulating the actual value of a , just check if --a is falsy"
console.log('ok');
}
console.log(a); // 0 ... WHY ? i never intended to change the value of a
Run Code Online (Sandbox Code Playgroud)
有人可以告诉我为什么当我没有明确地设定a --a
的值时,是否正在被人类化的价值?在代码中存在的if条件中我真的并不是说实际上减少了a的值,它只是一个if check我教过并且会改变它的值a
.
我猜,我显然是错的.我只是想知道,这只是一个javascript的东西,还是所有编程语言共同的?(IE能够在if条件中处理变量的值,实际上你想要做的只是临时管理变量的值而不是改变实际值.)
PS: 对不起,如果这个问题听起来真的很琐碎,但对我来说很重要.
编辑:没有要求解释a - 和--a如何工作,我想知道为什么:
计划一:
var a = 1;
--a;
console.log(a) // my expected output is 0
Run Code Online (Sandbox Code Playgroud)
计划二:
var a = 1;
if(--a){};
console.log(a) // my expected output is still 1 , because i did't expect --a inside the if to actually manipulate a.
Run Code Online (Sandbox Code Playgroud)
所以基本上我的问题是为什么--a
在if内部工作而不是如何--a
工作!
这是递减( - )运算符.
递减运算符递减(减去一个)其操作数并返回一个值.
怎么样 - 一个工作
在--a
相当于a = a - 1
.所以,当你使用--a
的值a
首先递减然后在表达式中使用.这不仅仅适用于Javascript,它通常用于大多数编程语言.
要检查值减1是否为零,您可以使用
if (!(a - 1)) {
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
1799 次 |
最近记录: |