проблема с передачей параметров в функцию
<script type="text/javascript">
function myConcat() {
var len = arguments.length; // количество аргументов
alert('len = '+ len);
var result=""
for (var i = 0; i < len; i++) {
result += arguments[i] + ",";
}
return result;
}
stroka = '"'+"red"+'"'+","+'"'+"orange"+'"'+","+'"'+"blue"+'"';
alert('stroka = '+ stroka);
res = myConcat("red","orange","blue"); // вариант обращения к функции
// res = myConcat(stroka); // вариант обращения к функции
alert('res = ' + res);
</script>
Здравствуйте, возникла непонятная для меня проблема с передачей параметров в функцию. Мне необходимо собрать аргументы в строку, а затем передать в функцию. Но при передаче в функцию списка параметров в виде myConcat("red","orange","blue") - количество аргументов len = 3, а при передаче в виде строки myConcat(stroka) - количество аргументов len = 1. Строка сформирована так: stroka = '"'+"red"+'"'+","+'"'+"orange"+'"'+","+'"'+"blue"+ '"'; При отображении alert(stroka) выводит "red","orange","blue", т.е. вроде тоже самое, а результат разный. Подскажите, пожалуйста, в чем тут дело и можно ли эту проблему решить? |
Проблема в незнании языка. В первом случае вы передаете три аргумента, а во втором - один. Или для вас это не очевидно?
|
Очевидно, конечно, что идет как один аргумент, об этом и спрашиваю: можно ли обойти эту проблему, если строка фактически содержит те же три аргумента
|
function myConcat(){
if( typeof arguments[ 0 ] == "string" && arguments.length == 1 )
return ( arguments[ 0 ].match( /\w+/g ) || [] ).join( "," );
return Array.prototype.slice.call( arguments ).join( "," );
};
alert(
myConcat( "red", "orange", "blue" ) == myConcat( '"red", "orange", "blue"' )
);
|
Спасибо!
|
| Часовой пояс GMT +3, время: 05:35. |