проблема с передачей параметров в функцию
<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, время: 23:15. |