今天一位剛畢業的同事問了我一個問題,為什么這段代碼執行結果是-1.代碼如下:
var o = { valueOf: function(){ return -1; } }; o = +o;
當時我也是懵逼的,納尼?沒有調用valueOf方法,他怎么自己執行了。經過網上查閱,最終知曉了原因。
valueOf()方法和toString()方法是一樣的,都會在后台進行隱式的調用,在 o = +o時,等號右邊就已經調用了valueOf(),相當於 o = +(-1);所以,最終結果o為-1.
謹以此紀念長時間不看基礎知識,導致的一些知識體系的漏洞。
大家共勉。