Это ответ вот на эту "загадку" про Object String или задача с двумя подводными камнями.
1. Object String согласно спецификации - это экзотический обьект. Что означает, что поведение этого обьекта, хотя-бы в одном из 12 стандартных поведений обьекта переопределено.
Одно из таких поведений как раз касается поведения в случае поиска данных которых связаны с ключами из множества indexed property. (Если не до конца корректно и максимально доходчиво то это множество числовыми ключей из диапазона 0 - 2^32 - 1. Некорректно потому - что в JS не существует числовых ключей у Object. Только ключи типа String и Symbol)
Это поведение, возвращает substring string.
Что это означает:
Если отвечать на вопрос строго формально, то с точки зрения спецификации, при создании Object String под каждый ключ, не создается отдальная строка. Геттер это делает только тогда, когда произошел запрос по конкретному индексу.
При этом, тот самый геттер, возвращает именно строку - то есть формально ее создает.
В результате первый подводный камень - до тех пор пока, не было обращения по конкретному индексу, спецификация не требует создания отдельной строки на каждый символ (Code Unit)
В то же время при обращении по индексу, такая строка должна быть создана.
Как следствие, попытка вызова любого console.dir, так как он показывает все что связано с каждым индексом, формально обязан создать все строки - так как должен обратиться к каждому геттеру.
То есть создать три строки: 'a', 'b', 'c'
Это все еще не все
Все что сказано Выше касается спецификации. А что в реальности V8?
В реальности V8, уже существуют описания для символов из диапазона US ASCII .
То есть при обращению к строке вида:
ничего страшного не случится, потому что обьект описывающий US ASCII - "a" уже заранее создан. И мы всего лишь свяжем идентификатор с ссылкой окторая давно создана.
То есть даже в случае
ничего страшного не будет, так как для US ASCII a, b, c - все обьекты созданы еще на старте V8.
И проблемы могут начаться только там, где внутри V8, на момент старта не создано заранее готовых обьектов для Code Unitov используемых в строке.
Например кирилицы.
1. Object String согласно спецификации - это экзотический обьект. Что означает, что поведение этого обьекта, хотя-бы в одном из 12 стандартных поведений обьекта переопределено.
Одно из таких поведений как раз касается поведения в случае поиска данных которых связаны с ключами из множества indexed property. (Если не до конца корректно и максимально доходчиво то это множество числовыми ключей из диапазона 0 - 2^32 - 1. Некорректно потому - что в JS не существует числовых ключей у Object. Только ключи типа String и Symbol)
Это поведение, возвращает substring string.
Что это означает:
Если отвечать на вопрос строго формально, то с точки зрения спецификации, при создании Object String под каждый ключ, не создается отдальная строка. Геттер это делает только тогда, когда произошел запрос по конкретному индексу.
При этом, тот самый геттер, возвращает именно строку - то есть формально ее создает.
В результате первый подводный камень - до тех пор пока, не было обращения по конкретному индексу, спецификация не требует создания отдельной строки на каждый символ (Code Unit)
В то же время при обращении по индексу, такая строка должна быть создана.
Как следствие, попытка вызова любого console.dir, так как он показывает все что связано с каждым индексом, формально обязан создать все строки - так как должен обратиться к каждому геттеру.
То есть создать три строки: 'a', 'b', 'c'
Это все еще не все
Все что сказано Выше касается спецификации. А что в реальности V8?
В реальности V8, уже существуют описания для символов из диапазона US ASCII .
То есть при обращению к строке вида:
var theStr = `abc`;
var theFirst = theStr[0];
ничего страшного не случится, потому что обьект описывающий US ASCII - "a" уже заранее создан. И мы всего лишь свяжем идентификатор с ссылкой окторая давно создана.
То есть даже в случае
var theStr = `abc`;
console.dir( theStr );
ничего страшного не будет, так как для US ASCII a, b, c - все обьекты созданы еще на старте V8.
И проблемы могут начаться только там, где внутри V8, на момент старта не создано заранее готовых обьектов для Code Unitov используемых в строке.
Например кирилицы.
Telegram
As For JS
Задача для тех кому нечем заняться.
Object String или задача с двумя подводными камнями.
Оценим обьект, который создан при помощи конструктора String.
Воспользуемся для этого любым доступным инструментом:
console.dir( new String("abc") );
развернув сформированный…
Object String или задача с двумя подводными камнями.
Оценим обьект, который создан при помощи конструктора String.
Воспользуемся для этого любым доступным инструментом:
console.dir( new String("abc") );
развернув сформированный…
❤12👍1
21-30 по Киеву
Тесты Array Allocation. Дополнение к видео о сложности алгоритмов
Это видео я записываю по просьбе Анатолий Шелестов, который обратил внимание на то, что тест с алокацией памяти для Array не выглядит точным и попросил переделать его в максимально корректных условиях.
https://www.youtube.com/watch?v=ZECTIKGj3ds
Тесты Array Allocation. Дополнение к видео о сложности алгоритмов
Это видео я записываю по просьбе Анатолий Шелестов, который обратил внимание на то, что тест с алокацией памяти для Array не выглядит точным и попросил переделать его в максимально корректных условиях.
https://www.youtube.com/watch?v=ZECTIKGj3ds
YouTube
Тесты Array Allocation. Дополнение к видео о сложности алгоритмов
Это видео я записываю по просьбе Анатолий Шелестов, который обратил внимание на то, что тест с алокацией памяти для Array не выглядит точным и попросил переделать его в максимально корректных условиях.
Чем мы и займемся.
Таймкоды:
__будут после___
AsForJs…
Чем мы и займемся.
Таймкоды:
__будут после___
AsForJs…
🔥9
Вопрос от нашего паписчика.
Вопрос интересный и не такой простой как кажется:
Что лучше использовать для конвертации числа в строку?
Какие есть соображения?
Вопрос интересный и не такой простой как кажется:
Что лучше использовать для конвертации числа в строку?
var theNum = 123;
theNum.toString();
String( theNum );
new String( theNum );
''+theNum;
`${theNum}`;
Какие есть соображения?
Forwarded from Nikita Zhuravel
Хлопцям з Мінометного взводу стрілецького батальона 93 ОМБР вкрай необхідна наша з вами допомога.
Дуже потрібні дрони Mavic 3 Pro у кількості 3-х штук, для коригування вогню задля забезпечення його точності та ефективності.
Фотозвіт та чеки після отримання дронів підрозділом.
Для МВСБ 93OМБР
🎯 Ціль: 240 000 ₴
🔗Посилання на банку
https://send.monobank.ua/jar/4owoDWKinC
💳Номер картки банки
4441 1111 2715 2878
Дуже потрібні дрони Mavic 3 Pro у кількості 3-х штук, для коригування вогню задля забезпечення його точності та ефективності.
Фотозвіт та чеки після отримання дронів підрозділом.
Для МВСБ 93OМБР
🎯 Ціль: 240 000 ₴
🔗Посилання на банку
https://send.monobank.ua/jar/4owoDWKinC
💳Номер картки банки
4441 1111 2715 2878
👍27👎19🤣7❤6🙏2🕊1😍1🌚1
В 19-00 по Киеву.
Смотрим вместе YT: Выводим Соера на чистую воду
Приглашаю всех на не мешки ворочать или о том как Дмитрий Карловский (автор $mol), смотрит видео: SOLID принципы в 2025: Полный разбор и прожарка, а мы смотрим как он смотрит ( Выводим Соера на чистую воду ).
https://www.youtube.com/watch?v=SzH2G0yFBHY
Смотрим вместе YT: Выводим Соера на чистую воду
Приглашаю всех на не мешки ворочать или о том как Дмитрий Карловский (автор $mol), смотрит видео: SOLID принципы в 2025: Полный разбор и прожарка, а мы смотрим как он смотрит ( Выводим Соера на чистую воду ).
https://www.youtube.com/watch?v=SzH2G0yFBHY
YouTube
Смотрим вместе YT: Выводим Соера на чистую воду
Приглашаю всех на не мешки ворочать или о том как Дмитрий Карловский (автор $mol), смотрит видео: SOLID принципы в 2025: Полный разбор и прожарка, а мы смотрим как он смотрит ( Выводим Соера на чистую воду ).
Ссылка на оригинальные видео:
https://www.…
Ссылка на оригинальные видео:
https://www.…
👍12😁7😍4🤯1👀1
Если Вам нечего посмотреть - то посмотрите Любовь Смерть и Роботы.
первые три сезона.
Каждая серия - это отдельная работа независимой студии, которая практически не связана с любой другой серией.
И никогда, слышите никогда не смотрите 4 сезон. Это мрак, идиотизм, издевательство и непонятно как вообще это могло появиться в принципе.
Я в таком диком ахуе, что потратил на это время, что готов стрелять их всех без суда и следствия.
Я не понимаю КАК можно было сделать первые три сезона после чего выбросить на рынок этот (4 сезон) отстойник?
Из всего 4 сезона, заслуживают частичного внимания только 2 серии и то из жалости.
первые три сезона.
Каждая серия - это отдельная работа независимой студии, которая практически не связана с любой другой серией.
И никогда, слышите никогда не смотрите 4 сезон. Это мрак, идиотизм, издевательство и непонятно как вообще это могло появиться в принципе.
Я в таком диком ахуе, что потратил на это время, что готов стрелять их всех без суда и следствия.
Я не понимаю КАК можно было сделать первые три сезона после чего выбросить на рынок этот (4 сезон) отстойник?
Из всего 4 сезона, заслуживают частичного внимания только 2 серии и то из жалости.
👍25🌚2
16-00 за Київом
Українською - нормальний співбесід щодо JavaScript
Чергова спроба Мурича опанувати Українську.
Співбесід що до знання мови JS, де буде спроба продемонструвати як це треба робити.
https://www.youtube.com/watch?v=aIvg0aaLuKo
Українською - нормальний співбесід щодо JavaScript
Чергова спроба Мурича опанувати Українську.
Співбесід що до знання мови JS, де буде спроба продемонструвати як це треба робити.
https://www.youtube.com/watch?v=aIvg0aaLuKo
YouTube
Українською - нормальний співбесід щодо JavaScript
Чергова спроба Мурича опанувати Українську.
Співбесід що до знання мови JS, де буде спроба продемонструвати як це потрібно робити.
Таймкоды:
__будут после__
AsForJs новости в Telegram: https://t.me/AsForJavaScript
AsForJs Talks в Telegram: https://t.me/AsForJsTalks…
Співбесід що до знання мови JS, де буде спроба продемонструвати як це потрібно робити.
Таймкоды:
__будут после__
AsForJs новости в Telegram: https://t.me/AsForJavaScript
AsForJs Talks в Telegram: https://t.me/AsForJsTalks…
👍20❤6🔥1🌚1🤣1
Ответ на вопрос о том,
что лучше использовать при конвертации числа в строку
Короткий ответ:
Если воспринимать вопрос буквально то:
TOP1:
Разница в производительности незначительна.
При этом следует помнить, что в случае template string (
Далее топ распределился следующим образом:
что вполне ожидаемо.
Длинный ответ
Очевидно что все зависит от целей, и сравнивать просто использование метода toString с template String некорректно.
Тот же метод toString обладает функционалом приведения отображения числа в зависимости от заданной системы счисления (двоичная, шестнадцатеричная и так далее) Чего не предоставляет не один другой.
Опять же использования "традиционной" конкатинации:
сильно начинает зависеть от обстоятельств финализированной строки, где одна конкатенация - это конечно же быстро, но если на требуется сто таких конкатенаций?
Вместо ИГОГО
В JS, преследуемая цель, может переворачивать с ног на голову выбираемое решение.
Обозначение которой - является залогом успеха при поиске наиболее эффективного решения.
Сейчас - в современном JS, при работе со строками, наиболее удобным и производительным решением является использования синтаксиса с
вместо синтаксиса с конкатенацией
Использование же toString или new String так же может быть эффективным решением, при условии решения соответствующих задач.
Например приведение отображения числа к соответствующей система счисления:
где реализация такого же самого функционала, с использованием "самого быстрого приема приведения числа к строке", потребует реализации алгоритма, издержки работы которого уничтожит все преимущества использования той самой конкатенации.
что лучше использовать при конвертации числа в строку
var theNum = 123;
theNum.toString();
String( theNum );
new String( theNum );
''+theNum;
`${theNum}`;
Короткий ответ:
Если воспринимать вопрос буквально то:
TOP1:
''+theNum;
`${theNum}`;
Разница в производительности незначительна.
При этом следует помнить, что в случае template string (
${theNum}
;), все сильно изменится если будет указна template function`${theNum}`; // максимально быстро
String.raw`${theNum}`; // много ньюансов
Далее топ распределился следующим образом:
theNum.toString();
String( theNum );
что вполне ожидаемо.
Длинный ответ
Очевидно что все зависит от целей, и сравнивать просто использование метода toString с template String некорректно.
Тот же метод toString обладает функционалом приведения отображения числа в зависимости от заданной системы счисления (двоичная, шестнадцатеричная и так далее) Чего не предоставляет не один другой.
Опять же использования "традиционной" конкатинации:
"" + theNum
сильно начинает зависеть от обстоятельств финализированной строки, где одна конкатенация - это конечно же быстро, но если на требуется сто таких конкатенаций?
Вместо ИГОГО
В JS, преследуемая цель, может переворачивать с ног на голову выбираемое решение.
Обозначение которой - является залогом успеха при поиске наиболее эффективного решения.
Сейчас - в современном JS, при работе со строками, наиболее удобным и производительным решением является использования синтаксиса с
var theStr = `${theNum}`;
вместо синтаксиса с конкатенацией
"" + theNum;
Использование же toString или new String так же может быть эффективным решением, при условии решения соответствующих задач.
Например приведение отображения числа к соответствующей система счисления:
var theNum = 15;
theNum.toString();
theNum.toString(2);
theNum.toString(16);
где реализация такого же самого функционала, с использованием "самого быстрого приема приведения числа к строке", потребует реализации алгоритма, издержки работы которого уничтожит все преимущества использования той самой конкатенации.
❤8👍6
16-15 за Київом.
Українською - другий нормальний співбесід щодо JavaScript
Чергова спроба Мурича опанувати Українську.
Співбесід що до знання мови JS, де буде спроба продемонструвати як це потрібно робити.
У цьому випадку ми поміняємося ролями.
https://www.youtube.com/watch?v=Trhk4u6wc5g
Українською - другий нормальний співбесід щодо JavaScript
Чергова спроба Мурича опанувати Українську.
Співбесід що до знання мови JS, де буде спроба продемонструвати як це потрібно робити.
У цьому випадку ми поміняємося ролями.
https://www.youtube.com/watch?v=Trhk4u6wc5g
YouTube
Українською - другий нормальний співбесід щодо JavaScript
Чергова спроба Мурича опанувати Українську.
Співбесід що до знання мови JS, де буде спроба продемонструвати як це потрібно робити.
У цьому випадку ми поміняємося ролями.
Таймкоды:
__будут после__
AsForJs новости в Telegram: https://t.me/AsForJavaScript…
Співбесід що до знання мови JS, де буде спроба продемонструвати як це потрібно робити.
У цьому випадку ми поміняємося ролями.
Таймкоды:
__будут после__
AsForJs новости в Telegram: https://t.me/AsForJavaScript…
🔥13👎4👍3❤2🙏1🤣1
Друзья мне срочно нужна ваша помощь.
На фото кот Мася. Он соседский кот которого я знаю уже 10 лет.
У него сейчас отказали лапы.
Я везу его в больницу и мне понадобяться деньги, своих у меня сейчас нет.
Карта Приват (Bobrov Maksym): 5168745021397333
USDT Tron (TRC20): TKoZu59WHiX6L6qvwYTYTsZJerDrnAHBTx
USDT etherium (erc20): 0x75fb8a62dfcf453b2e73f1ef1c407d46f918fffa
TON: UQAGXvuhxg3qU0eFgOxtdDlKXqdp1zPq6yCRSRbRYQClxOzH
bitcoin:bc1q74aru82v4d3alay7p53jdwkmxe4a5gz7fmvfm2?message=AsForJS&time=1686349743
PayPal: demimurych@protonmail.com
На фото кот Мася. Он соседский кот которого я знаю уже 10 лет.
У него сейчас отказали лапы.
Я везу его в больницу и мне понадобяться деньги, своих у меня сейчас нет.
Карта Приват (Bobrov Maksym): 5168745021397333
USDT Tron (TRC20): TKoZu59WHiX6L6qvwYTYTsZJerDrnAHBTx
USDT etherium (erc20): 0x75fb8a62dfcf453b2e73f1ef1c407d46f918fffa
TON: UQAGXvuhxg3qU0eFgOxtdDlKXqdp1zPq6yCRSRbRYQClxOzH
bitcoin:bc1q74aru82v4d3alay7p53jdwkmxe4a5gz7fmvfm2?message=AsForJS&time=1686349743
PayPal: demimurych@protonmail.com
❤59🙏9👌4🤣2
МАСЯ ПОШЕЛ!!!
он сделал 4 шага,
потом хряпнулся,
нихрена не видит куда идти,
но он встал и ПОШЕЛ!
он сделал 4 шага,
потом хряпнулся,
нихрена не видит куда идти,
но он встал и ПОШЕЛ!
🔥37❤18
Человек чрезвычайно большого сердца, который уже два года как ушел от нас на радугу -
https://music.youtube.com/watch?v=yAoowh_NlOI&si=rPMh6R0R7E1rjedE
https://music.youtube.com/watch?v=yAoowh_NlOI&si=rPMh6R0R7E1rjedE
YouTube
Мои года - моё богатство
Provided to YouTube by Вахтанг Кикабидзе
Мои года - моё богатство · Вахтанг Кикабидзе
Мои года
℗ 1994 Vex.Distro
Released on: 2016-12-26
Music Publisher: Copyright Control
Composer Lyricist: Вахтанг Кикабидзе
Auto-generated by YouTube.
Мои года - моё богатство · Вахтанг Кикабидзе
Мои года
℗ 1994 Vex.Distro
Released on: 2016-12-26
Music Publisher: Copyright Control
Composer Lyricist: Вахтанг Кикабидзе
Auto-generated by YouTube.
🙏6
Напишите или позвоните родителям.
Завтра может быть поздно.
Завтра может быть поздно.
❤30🕊9🤯3💔2👌1