今天看了一段代碼,大概是這樣的: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。
看來人要大膽說出本身的想法,堅持本身的想法纔對。哪怕是錯了呢。