javascriptを書いていて、様々な諸事情からonclickの処理内容をそのonclickで変更したいと思ったのです。
具体的には次のような感じ。
<a onclick="this.outerHTML = this.outerHTML.replace(/true/g, 'false'); if(true)alert('aaaaa');">リンク</a>
このリンクをクリックしたらどうなるかというと、アラートが表示されます。つまり、if文の条件式はtrueのままだったというわけです。
ですが、アラートが表示された後にこのaタグを確認してみると、
<a onclick="this.outerHTML = this.outerHTML.replace(/false/g, 'false'); if(false)alert('aaaaa');">リンク</a>
のように変わっています(replaceのtrueまで変わってしまっていますが)。
もちろんこれをクリックしてもアラートは出てきません。
ようするに、onclickはイベントが発火した時点で実行内容が確定されており、その実行中に実行内容を変えることはできない、ということのようです。