Подскажите, почему в js ""[1] выдает undefined? Почему возможен такой синтаксис? Что это все значит? Как это вообще возможно?
Здравствуйте В JS:
""
это строка, при обращении к индексу 1
""[1]
мы получаем
undefined
Т.к. этот индекс отсутствует. Если же он будет, то мы получим символ, которому он соответствует
"123"[1] //выведет 2, т.к. индексация начинается с 0
"" - является пустой строкой. Доступ к символам строки осуществляется также, как в массиве , вы можете обратиться к любому из них по индексу.
"строка"[1] // на выходе получается "т"
В вашем случае вы выходите за пределы массива, элемент с индексом 1 не определен.
При обращении к символам строки с использованием нотации квадратных скобок происходит обращение к свойству (property) с указанным именем (в данном случае именем является число и можно проверить его наличие с помощью метода hasOwnProperty). В случае же обращения к несуществующему свойству возвращается неопределённое значение - undefined. При использовании же метода charAt с указанием индекса, которого нет в строке, вернётся пустая строка.
Если разложить по полочкам, то ваш код равносилен чему то подобному:
var var1;
var1 = "";
var1[1] === undefined //true
И т.к. string также является массивом, то обращение по индексу 1, когда длинна массива равна 0, вызывает undefined (т.е. "".length = 0 )
Современные инструменты для криптотрейдинга: как технологии помогают принимать решения
Апостиль в Лос-Анджелесе без лишних нервов и бумажной волокиты
Основные этапы разработки сайта для стоматологической клиники
Продвижение своими сайтами как стратегия роста и независимости