当你测试=!test时,为什么var test = false变为true?

时间:2017-09-07 09:08:44

标签: javascript

Javascript新手在这里,我的思绪现在正在弯曲。

var test = false
test = !test
// returns true
我知道了!是一个爆炸操作符,并将布尔值更改为与当前相反的值。

但是我无法理解

中发生的事情
test = !test

变量测试首先指向false值,但此变量是否设置为自身?似乎测试变量已设置为自身,然后bang运算符应用使其成立。但是赋值运算符的两边可以设置相同的变量吗?

5 个答案:

答案 0 :(得分:0)

让我们一步一步来做。

test =

您现在正在为test分配一个新值

= ![...]

这与...的逻辑相反。

= !test

... test中的当前值。这段代码总结的是反转测试并将该操作的结果应用于变量本身,从而有效地改变它。

有助于理解整个操作的是test 指向false但 false。

答案 1 :(得分:0)

它返回true。也许你应该在陈述结尾加上;https://jsfiddle.net/dtpx1d5m/

答案 2 :(得分:0)

var test = false; // test = false
test = !test; // test = true (because `test` was `false`, now it's equal to opposite value: `true`)

并且不要忽略行尾的分号。

答案 3 :(得分:0)

test

此处您将test = !test的值设置为false。

test

首先评估的是右侧。因此,通过追溯到test,您将获得其价值。

Ultimatelly false!test相同。因此!false变为true,其评估为test = !test

因此,您的test = !falsetest = true相同,最后变为ServicePointManager.SecurityProtocol = SecurityProtocolType.Tls | SecurityProtocolType.Tls11 | SecurityProtocolType.Tls12;

答案 4 :(得分:0)

您只需使用新值分配变量测试,新值为!test。



var test = false;
test = !test; //you assign new value to test, and old value will be replaced
document.getElementById('tes').value = test;

<input type='text' id='tes'>
&#13;
&#13;
&#13;