关于javascript中=的返回值

今天看了一段代码,大概是这样的:javascript

function test(){
	a=4;
	b=5;
	return b=a;
}
test();//返回?

返回值是多少呢?运行结果是4

这能够理解为将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);//4
console.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。

看来人要大胆说出本身的想法,坚持本身的想法才对。哪怕是错了呢。

相关文章
相关标签/搜索