Почему так происходит?

235
03 ноября 2017, 12:21

Подскажите, почему в js ""[1] выдает undefined? Почему возможен такой синтаксис? Что это все значит? Как это вообще возможно?

Answer 1

Здравствуйте В JS:

""

это строка, при обращении к индексу 1

""[1]

мы получаем

undefined

Т.к. этот индекс отсутствует. Если же он будет, то мы получим символ, которому он соответствует

"123"[1]  //выведет 2, т.к. индексация начинается с 0
Answer 2

"" - является пустой строкой. Доступ к символам строки осуществляется также, как в массиве , вы можете обратиться к любому из них по индексу.

"строка"[1] // на выходе получается "т"

В вашем случае вы выходите за пределы массива, элемент с индексом 1 не определен.

Answer 3

При обращении к символам строки с использованием нотации квадратных скобок происходит обращение к свойству (property) с указанным именем (в данном случае именем является число и можно проверить его наличие с помощью метода hasOwnProperty). В случае же обращения к несуществующему свойству возвращается неопределённое значение - undefined. При использовании же метода charAt с указанием индекса, которого нет в строке, вернётся пустая строка.

Answer 4

Если разложить по полочкам, то ваш код равносилен чему то подобному:

var var1; 
var1 = ""; 
var1[1] === undefined //true

И т.к. string также является массивом, то обращение по индексу 1, когда длинна массива равна 0, вызывает undefined (т.е. "".length = 0 )

READ ALSO
Стили в CakePHP

Стили в CakePHP

Вот сайт enkaroru При заказе натянули шаблон, стили прописаны от источника где лежит шаблон, вот так:

209
cursor в contenteditable

cursor в contenteditable

Если в первый раз кликнуть на div contenteditable то курсор становится где-то вверху, при наборе текста, он становится на правильное местоКак можно...

225
Проблема с подключением API яндекс карт

Проблема с подключением API яндекс карт

Пытаюсь подключить API яндекс карт в head:

398