Carduelis
@Carduelis
Web-developer, front-end, js, less

Почему javascript делает так?

Что будет, если исполнить такой код?
name = "string"
name = name.split('');
name_spliced = name.splice(1,1);
console.log(name_spliced)

Думаете, он выведет ["t"]?
Нет, он выдаст ошибку. Почему? Потому что.
not_name = "string"
not_name = not_name.split('');
not_name_spliced = not_name.splice(1,1);
console.log(not_name_spliced)

А вот этот выдаст уже ["t"]

Чуть покопавшись, определил, что name.split('') js смог сделать, только вот потом, почему-то он стал строкой с запятыми, а не массивом.
В Crhome такие вот чудеса: take.ms/vQCVx вот тут он сначала строка, потом-таки массив, а потом снова строка.
В IE EDGE это работает take.ms/XKi5I
  • Вопрос задан
  • 241 просмотр
Решения вопроса 1
@amatory10
дело в том что name является свойством глобального объекта window, причем может быть только строкой
при присвоении любого значения вызывается ф-ия toString().
Та же ситуатция в принципе со status.
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 2
Sanasol
@Sanasol Куратор тега JavaScript
нельзя просто так взять и загуглить ошибку
name = "string"
name[1]
Ответ написан
Комментировать
Используйте всегда ключевое слово var и не будет у вас таких проблем :)
var name = "string";
name = name.split('');
name_spliced = name.splice(1,1);
console.log(name_spliced)
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы