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

Что такое 'Элемент' в вашем примере? Он нигде не определен. – RJM

+0

@RJM - Они хотят получить доступ к следующему или предыдущему элементу, где 'direction' является переменной, а« Element »является добавленной строкой для формирования динамической переменной, чтобы она возвращала значение« previousElement »или« nextElement ». – Jim

ответ

-1

Использование console.log(direction + "Element") в функции.

  • Объединение двух струн. Вы неправильно написали свой код, поскольку пытаетесь получить доступ к несуществующему элементу массива.

  • Направление - это не массив. Это строка.

0

Для того, чтобы сделать это, вам придется использовать eval или какой-либо другой аромат по существу делает то же самое.

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.

Это, конечно isn't the safest or smartest thing to do, но это то, что вы просите, и возвращает правильный результат.

1

Вам лучше использовать объект для его удержания и использовать переменную для доступа к свойству с нотной скобкой.

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

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

 
myFunction('previous');

2

Самым безопасным способом было бы обернуть направления как объект:

function myFunction(direction) { 
    var element = { 
     "previous": "Previous Element", 
     "next": "Next Element" 
    }; 
    return direction in element ? element[direction] : false; 
} 

myFunction('previous'); 

//I want it to print "Previous Element" or "Next Element" depending on what the direction is. 
Смежные вопросы