爲了擴大對這個問題,我想這種說法是可能的:在評估右側之前,是否有可能強迫`=`的左側完全評估爲參考?
declare("Hello") = bindVal("World")
其中兩個declare
和bindVal
的功能,做這樣的事情:
function declare(p){ return window[p] }
function bindVal(x){ return x }
這裏的關鍵是,declare
運行一些手術並且有一些副作用。但在我的情況下,declare不必返回任何東西。儘管如果它返回一個等待分配值的「懸掛」變量,那將是最理想的。
現在運行在控制檯這個表達式引發錯誤:
ReferenceError: Invalid left-hand side in assignment
所以我的問題是:我可以做任何事情花哨功能declare
這樣,我的說法是可能的嗎?在我看來,這是一個如何的左側和右側進行評估的順序:
declare("Hello") = bindVal("world")
window.Hello = bindVal("world")
window.Hello = world
綜上所述,左側完全右側前評估。
不可能爲函數調用賦值。 –
我不明白這個問題。爲什麼你不能只寫'window.Hello = world'? – georg
你應該把賦值放在'declare'中,並且傳遞'bindVal(...)'作爲第二個參數。 –