0

スクリプトのメインルートに変数を設定しています

var name="blah";

パラメータに直接渡すことなく、関数内からこれを参照する必要があります。「var」イニシャライザを使用せずにグローバル スコープで変数を設定できましたが、それは私の関数ではうまくいきました。しかし、同様の理由でこれを行う方法を知る必要があります。

Flash (AS2/AS3) では、_root.myvarまたは_parent.myvar

JSで?

サンプル:

var name="blah";
var sex="m";
templateMe('name,sex'); // declared the actual NAME of the var not the var itself 

次に.. templateMe関数は、関数に渡された「文字列」を変数名とそれに対応する値の両方として使用するだけです

「名前」文字列がなるという意味

var name=eval(name) 

関数の一部を次に示します。

vars_r =  vars.split(",");
r_count = vars_r.length;

if(r_count < 1 ){
    return template;
}

var i=0;
var needles = new Array();
var replacements  = new Array();;
for(i=0; i < 2; i++){ //ti <-- use own i counter coz it conflicts w/ global i
    needles.push("{{"+ vars_r[i] + "}}");
    replacements.push( eval( vars_r[i]) );

}

等...

これが今より理にかなっていることを願っています

4

2 に答える 2

0

あなたの質問を正しく理解していれば、変数を渡す必要はまったくありません。

変数はすでにグローバルなので、直接参照できます。

例えば:

var value1 = "some value";  /* these variables are global, so you can refer to them from anywhere in your script */
var value2 = 25;            /* ********************************************* */
someFunction();

someFunction は次のようになります。

function someFunction() {
    var newValue = value2 + 3; 
    alert(newValue); /* Alerts 28. */
    alert(value1); /* Alerts 'some value'. */
}

JavaScript を学ぶ場所が必要な場合は、おそらくwebplatform.orgから始めるのがよいでしょう。

お役に立てれば!

于 2013-04-06T05:51:39.760 に答える
0

グローバル変数はwindowオブジェクトのプロパティです。したがって、グローバル変数を参照する必要がある場合、その名前が という文字列変数に含まれている場合は、次のようにvarnameを使用できます。window[varname]

var foo = 'bar';
var varname = 'foo';
console.log( window[varname] );

これは次を印刷します:

bar

Stephen が指摘するように、全体的な問題に対処するためのより良い方法がある可能性がありますが、この方法でグローバル変数にアクセスする必要がある場合は、このアプローチがうまく機能します。

コードを見ると、次の行を置き換えると思います。

replacements.push( eval( vars_r[i]) );

と:

replacements.push( window[ vars_r[i] ] );

このコードが何をしているかはわかりませんが。いずれにせよ、window[varname]よりもはるかに優れていeval(varname)ます。

于 2013-04-06T06:22:34.270 に答える