5ちゃんねる ★スマホ版★ ■掲示板に戻る■ 全部 1- 最新50  

■ このスレッドは過去ログ倉庫に格納されています

Irvine Part32

715 :名無し~3.EXE:2014/08/11(月) 03:00:26.10 ID:2nOIFmjq
i = 0; //わざとグローバル変数
var str = new Utf8('\u0061').unescape().toSJIS();
println(i);
exit();

i = 6 になってしまうのは何故なんでしょうか?

unescape関数内に
> for (var i = 0, prev = -1; i < sbLen; ) {
という記述がありますが
なぜ関数内のローカル変数がグローバル変数を書き換えるんでしょうか?

716 :名無し~3.EXE:2014/08/11(月) 03:49:59.19 ID:2nOIFmjq
common_load('utf8');
i = 0; //わざとグローバル変数
sbLen=0; //わざとグローバル変数
var str = new Utf8('\u0061').unescape().toSJIS();
println('i=' + i);
println('sbLen=' + sbLen);
exit();

sbLenは0のままだ・・・
やばい耳から煙出てきた

717 :名無し~3.EXE:2014/08/11(月) 04:01:05.31 ID:GjfHUltg
どっかで書き換えられることは仮定しといて、だめだったらn0、n1とかで回避。

718 :名無し~3.EXE:2014/08/11(月) 04:16:21.66 ID:/v0HOEji
>>715
for文で複数の変数定義するとグローバル変数として見なされてしまってる様だね

function func_A() { for(var i=0; i<6; i++); };
function func_B() { for(var i=0, x=0; i<6; i++); };
i=12345;
func_A();
print("A " + i); //12345
func_B();
print("B " + i); //6

719 :715:2014/08/11(月) 05:31:05.73 ID:2nOIFmjq
>>718
煙が止まった。
JavaScriptでは大丈夫でした。

DMonkeyScriptは
function func_B() { var i, x; for(i=0, x=0; i<6; i++); };
だと大丈夫なのね。

varの付け忘れ気をつけよっと。

274 KB
★スマホ版★ 掲示板に戻る 全部 前100 次100 最新50

read.cgi ver 05.04.02 2018/11/22 Walang Kapalit ★
FOX ★ DSO(Dynamic Shared Object)