あらすじ
- タイトルの通り
- 自分で書くときは同じ変数名使わないよ!
環境
- jsp-2.3
JSPのソース
jspの中の、javascriptの中にvar piyo
という変数がある。
javascript内でスクリプトレットでもString piyo
という変数を定義している。
<!-- 中略 -->
<SCRIPT>
function hoge(){
<%String piyo = "";%>
var piyo = "";
<%piyo = "initial_jsp";%>
piyo = "initial_js";
alert("1 <%=piyo%>");
alert("2 "+piyo);
<%piyo = "update_jsp";%>
piyo = "update_js";
alert("3 <%=piyo%>");
alert("4 "+piyo);
}
</SCRIPT>
<!-- 中略 -->
実行結果(アラート)
このfunctionを呼びだした時の実行結果。(アラート)
1 initial_jsp
2 initial_js
3 update_jsp
4 update_js
出力されたソース
出力されたページのソース。
<!-- 中略 -->
<SCRIPT>
function hoge(){
var piyo = "";
piyo = "initial_js";
alert("1 initial_jsp");
alert("2 "+piyo);
piyo = "update_js";
alert("3 update_jsp");
alert("4 "+piyo);
}
</SCRIPT>
<!-- 中略 -->
スクリプトレットはサーバーで処理して返すから、 実際にレンダリングされた結果を見ればわかるけど同じ変数名だと気づくのに時間がかかった。(´Д`;)