JavaScript, ты пьян, иди домой!
Прошу прощения за такой провокационный заголовок, просто именно эта фраза возникла у меня в голове когда я увидел следующее:
<p>privet</p> <script> alert([...document.getElementsByTagName("p")].map(e=>e.innerHTML.match(/[^<^>]/g)).join("")) </script> Результат - всплывает окно, где написано "p,r,i,v,e,t". , Мой вопрос: ОТКУДА ВЗЯЛИСЬ ЗАПЯТЫЕ??? |
alert([1,2,3]) Пить меньше надо. ;) |
Цитата:
alert(["a","b","c"].join("")) // "abc" Цитата:
|
.match(/[^<^>]/g) Найти все символы не равные "<", "^" или ">" по одному. |
Цитата:
|
Цитата:
|
Цитата:
Смотрите: ["p","r","i","v","e","t"].join("") // "privet" [...document.getElementsByTagName("p")].map(e=>e.innerHTML.match(/[^<^>]/g)).join("") // "p,r,i,v,e,t". И там и там строковый массив, а результат разный. |
Всё, сообразил. Я ошибся и join'ом соединял не результаты регулярного выражения, а параграфы.
Правильно должно быть так: <p>privet</p> <script> alert([...document.getElementsByTagName("p")].map(e=>e.innerHTML.match(/[^<^>]/g).join(""))) </script> |
Цитата:
|
Цитата:
alert([...'asd']); |
Часовой пояс GMT +3, время: 15:49. |