今天看了一段代码,大概是这样的:javascript
function test(){ a=4; b=5; return b=a; } test();//返回?
这能够理解为将a的值赋给b之后,返回b的值,也就是说“=”是有返回值的。java
若是是这样的话咱们不难理解:chrome
var a=3; var b=4; console.log(c=(a=b));//4
<pre name="code" class="javascript">console.log(a);//4console.log(c);//4 控制台输出4 4 4
a=b运算后,a被赋值为4,并返回4,c=4运算后,c被赋值为4,而且返回4浏览器
触类旁通:spa
var a=0; if(a=10){ console.log("true"); }else{ console.log("false"); }控制台输出true;
由于a=10,运算后返回10而if(10)将被判断为truecode
var a=0; if(a=0){ console.log("true"); }else{ console.log("false"); }
控制台输出false;索引
由于a=0,运算后返回0,而if(0)将被判断为falseip
因此同志们不当心把==写成=的话应该知道结果会变成什么样了吧。后续:io
这样一道题,a=b=3;那么a=?console
答案是3,这没有问题。
继续问:若是我继续改变b的值,如b=2;那么a=?
我感受应该是3,觉得这是赋值,而不是索引。
有人说a=2,我当时比较迷惑,但也没有继续深刻这个话题,惧怕本身说的多错的多。
刚才我用chrome浏览器的控制台尝试了一下,的确是a=3。
看来人要大胆说出本身的想法,坚持本身的想法才对。哪怕是错了呢。