JavaScript初心者のものです。
var y = 'global' function g(){ var y = "local"; eval("y += 'changed'") return y } console.log(g(),y) //localchanged global
このプログラムに関して、疑問点があります。
eval関数を直接(変数に収納したりせずに)呼び出すと、ローカル変数を適用する、と習いました(変数に収納した場合、グローバル変数等が適用される)。ここで疑問に思ったのが、「console.log()」においてg()が「y」よりも先に呼び出されており、g()に先行して書かれた「var y = 'global'」の値が変わっていない、ということは、たとえ同名の変数であっても、function内で実行される代入および値の変更はグローバル変数には影響しない、という認識でよろしいでしょうか?
よろしくお願いいたします。
回答4件
あなたの回答
tips
プレビュー