Сергей Соколов, это да, но последняя строка кода явно намекает что будет взят следующий символ что очень логичное действие для обработки двухбайтной последовательности UTF-8 и совершенно непонятное действие для кириллической буквы в кодировке win1251.
Кирилл Ш, первая причина — это слишком неочевидный код (иначе не было бы этого поста), а значит это уже плохой код для продукта.
Вторая причина — он благополучно сломается на счёте 10:1, т.е. он не работает для каких-то вполне реальных данных, а работает только при искусственных ограничениях данных в задаче.
Красивый хак. В реальном коде так конечно делать не нужно.
Тут строка вида 3:1 (цифра-двоеточие-цифра) деструктурируется в три переменных — икс, подчёркивание и игрек. Вместо подчеркивания можно было бы написать любое другое имя переменной.
1, но возможны варианты. Например купить у провайдера дополнительный IP или подключить к роутеру несколько провайдеров. Хотя эти опции уже для сильно продвинутых пользователей.
2, спросить у провайдера. В 99% динамический (хотя может и не менятся годами) просто потому что услуга статического IP продаётся за отдельные деньги.
В спецификации написано не «родителя», а containing block. И там же указано что для абсолютно спозиционированных элементов это ближайший родитель с не-static-позиционированием. Если такого нет, то корневой элемент.