關於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。

看來人要大膽說出本身的想法,堅持本身的想法纔對。哪怕是錯了呢。

相關文章
相關標籤/搜索