2016-08-22 3 views
-2

文字列連結を使用して変数を呼び出すことができるかどうか、または名前変数を使用することができますか?関数で渡されるパラメータに応じて異なるテキストを出力しようとしています。あなたの関数でパラメータの値に基づいて別の結果を印刷するにはどうすればよいですか?

function myFunction(direction) { 
 
    var previousElement = "Previous Element"; 
 
    var nextElement = "Next Element"; 
 
    console.log(direction+Element); 
 
    //I want it to print "Previous Element" or "Next Element" depending on what the direction is. 
 
} 
 

 
myFunction('previous');

+1

あなたは文字列の連結について尋ねているのはなぜ?あなたの例では連結を行っていません。 – RJM

+0

あなたの例では 'Element'とは何ですか?どこにも決して定義されません。 – RJM

+0

@RJM - 'direction'が変数である次のまたは前の要素にアクセスしたいとします。また、' Element 'は 'previousElement'または' nextElement'の値を返すように動的変数を作るために追加される文字列です。 – Jim

答えて

-1

使用console.log(direction + "Element")

  • 2つの文字列を連結します。存在しない配列要素にアクセスしようとしているときにコードを間違って書きました。

  • 方向は配列ではありません。それは文字列です。

0

これを行うには、evalなどの本質的に同じことを行う必要があります。

もちろん isn't the safest or smartest thing to do

function myFunction(direction) { 
 
    var previousElement = "Previous Element"; 
 
    var nextElement = "Next Element"; 
 
    
 
    // Construct an actual call to previousElement or nextElement, not a string 
 
    var variable = eval(direction + "Element"); 
 
    
 
    console.log(variable); 
 
} 
 

 
myFunction('previous'); 
 

 
//I want it to print "Previous Element" or "Next Element" depending on what the direction is.

これが、それはあなたが求めているもので、正しい結果を返します。

1

オブジェクトを保持する方がよい場合があります。変数を使用して、ブラケット記法でプロパティにアクセスする方がよい場合があります。

var msgs = { 
 
    "previous" : "Previous Element", 
 
    "next" : "Next Element" 
 
}; 
 

 
function myFunction(direction) { 
 
    console.log(msgs[direction]); 
 
} 
 

 
myFunction('previous');

2

最も安全な方法は、オブジェクトとして方向をラップすることです:

​​
関連する問題