@bzotsss

Строка это массив?

Всем привет , меня интересует вопрос , почему мы может обращаться к символам строки как к эл. массива ? например:
let a ="myString"
leb b = a[2] // S
let c = a.length // 8
Строка - это примитив , так почему же мы можем обр. к свойствам как у массива и тд...?
  • Вопрос задан
  • 1160 просмотров
Решения вопроса 5
Комментировать
zb_venom
@zb_venom
Жизнерадостный чебурек
Строка это не массив, мы не можем заменить символ как было бы с элементом массива, строка это тип данных
let str = 'Hi';
str[0] = 'h'; // ошибка
alert( str[0] ); // не работает

Читайте теорию
Ответ написан
Rsa97
@Rsa97
Для правильного вопроса надо знать половину ответа
https://developer.mozilla.org/ru/docs/Web/JavaScri...
Обратите внимание, что JavaScript различает объекты String и значения строкового примитива (то же самое верно и для объектов Boolean и Number).
Строковые литералы (обозначаемые двойными или одинарными кавычками) и строки, возвращённые вызовом String в неконструкторном контексте (то есть, без использования ключевого слова new) являются строковыми примитивами. JavaScript автоматически преобразует примитивы в объекты String, так что на строковых примитивах возможно использовать методы объекта String. В контекстах, когда на примитивной строке вызывается метод или происходит поиск свойства, JavaScript автоматически оборачивает строковый примитив объектом и вызывает на нём метод или ищет в нём свойство.
Ответ написан
Комментировать
WblCHA
@WblCHA
Строка ─ это массив чаров. И это в целом особенность языков программирования.

так почему же мы можем обр. к свойствам как у массива и тд...?

Потому что их просто туда не добавили, но ничего не мешает их использовать через кол.
const r = Array.prototype.map.call('qwerty', (ch) => ch.toUpperCase());
console.log(r);
Ответ написан
sergiks
@sergiks Куратор тега JavaScript
♬♬
Свойство length есть не только у строки и массива: например, есть length и у Function.
пример
function f(a, b, c) {}

f.length // 3 - число аргументов

Чтение через квадратные скобки и свойство length — на этом и заканчиваются общие черты, пожалуй? У строки чтение символа по его позиции через квадратные скобки — скорее просто синтаксический «сахар», более короткая запись метода строки charAt()

Фундаментальное отличие строки от массива символов — строка неизменяема (иммутабельна, immutable).
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

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

Войти через центр авторизации
Похожие вопросы