今天看了一段代码,大概是这样的:
function test(){
a=4;
b=5;
return b=a;
}
test();//返回?
返回值是多少呢?运行结果是4
这可以理解为将a的值赋给b以后,返回b的值,也就是说“=”是有返回值的。
如果是这样的话我们不难理解:
var a=3;
var b=4;
console.log(c=(a=b));//4
<pre name="code" class="javascript">console.log(a);//4
console.log(c);//4
控制台输出4 4 4
a=b运算后,a被赋值为4,并返回4,c=4运算后,c被赋值为4,并且返回4
举一反三:
var a=0;
if(a=10){
console.log("true");
}else{
console.log("false");
}
控制台输出true;
因为a=10,运算后返回10而if(10)将被判断为true
var a=0;
if(a=0){
console.log("true");
}else{
console.log("false");
}
控制台输出false;
因为a=0,运算后返回0,而if(0)将被判断为false
所以同志们不小心把==写成=的话应该知道结果会变成什么样了吧。
转载请注明出处。
后续:
这样一道题,a=b=3;那么a=?
答案是3,这没有问题。
继续问:如果我继续改变b的值,如b=2;那么a=?
我感觉应该是3,以为这是赋值,而不是索引。
有人说a=2,我当时比较迷惑,但也没有继续深入这个话题,害怕自己说的多错的多。
刚才我用chrome浏览器的控制台尝试了一下,的确是a=3。
看来人要大胆说出自己的想法,坚持自己的想法才对。哪怕是错了呢。