Изучайте современный JavaScript с нами совершенно бесплатно!

С чего начать программисту.

Решенные задания

В JavaScript значения строк неизменяемы, а это значит, что они не могут быть изменены после создания. Например, следующий код:

var myStr = "Bob";
myStr[0] = "J"; 
не может изменить значение myStr на «Job», потому что содержимое myStr не может быть изменено. Обратите внимание, что это не означает, что значение переменной myStr нельзя изменить. Нельзя изменить именно отдельные символы строки. Но можно изменить в целом значение переменной myStr, если присвоить ей новое значение, например:
var myStr = "Bob";
myStr = "Job"; 


Исправьте присвоение значения переменной myStr, чтобы она содержала строковое значение Hello World, используя подход, показанный в приведенном выше примере.


Задачи где нужна помощь

  1. Статус
    Задача
    Дата создания
    Планируемая дата начала
    Планируемая дата выполнения
    Дата начала
    Дата выполнения
    Постановщик
    Кто работает
  2. Новая

    Задача: Загрузка картинок из редактора через @prisma-cms/uploader Нужна помощь

    Проект: Обучение. Март.

    Разбираю Editor.js и уперся: как залить картинку, которую добавляем через редактор.

    В редакторе есть функция, в которую залетает файл, в ней надо загрузить файл и вернуть полную ссылку на файл.


    import Uploader from '@prisma-cms/uploader' ... uploadByFile(file: string | Blob) { console.log('file', file) //Здесь пытаюсь через Uploader загрузиться и получить url return Uploader.upload(file).then(() => { return { success: 1, file: { url: 'http://localhost:3000/uploads/images/1638094124655-Z62_3167.jpg', }, } }) }, },

    Ругается на .upload(file): Property 'upload' does not exist on type 'typeof Uploader'.ts(2339)

    Понятно ,что куда-то совсем не туда полез ,нео выползти не получается.

    Нужна помощь!
    Вопрос: как правильно пристроить Uploader в этом случае?
    28 нояб. 2021 г., 14:06
  3. Новая

    Задача: Запрос уникального объекта не по id Нужна помощь

    Проект: Обучение. Март.


    Вытаскиваю из url с помощью useRoute порпаметр поста urlname и по нему делаю фильтр среди всех постов. Работает, но явно это гланды через ж...
    Как в том случае следкет поступить?
    24 нояб. 2021 г., 8:56
  4. Выполняется

    Задача: Перенести страницы и настроить роутинг 2 Нужна помощь

    Проект: Учебный проект на next-js. Покемоны.

    Перенести оставшиеся страницы на NextJs:

    1. Перенести стили из css в styled-components
    2. Пофикстить Typescript ошибки
    3. Пофиксить подключение к firebase

    17 февр. 2021 г., 18:04
    17 февр. 2021 г., 0:00
    21 февр. 2021 г., 0:00
    17 февр. 2021 г., 0:00

Все задачи где нужна помощь

Новые Комментарии

stats{max, min} - подобный код вообще невалидный в JS. А по поводу вашего вопроса: давайте еще подробнее разберем синтаксис.
const half = ({max, min}) => (max + min) / 2.0;
Здесь выполняется операция присвоения (с использованием оператора присвоения (или присваивания, кому как больше нравится)). То есть здесь сразу надо разбить на две части: то, что слева от знака = и то, что справа. При этом порядок выполнения тут справа налево, то есть сначала будет вычислен конечный результат справа, и только потом этот результат будет передан в левую часть, то есть в нашем случае присвоен константе half. И здесь надо понимать, что константа здесь не обязана называться именно half. Какое бы мы не дали допустимое имя здесь, она все равно получила бы результат выполнения из правой части.

А что у нас справа? А тут у нас просто стрелочная функция. При этом обратите внимание, что в данном случае присваивается не результат этой функции, а именно сама функция. То есть сейчас она только создана, но ее еще не вызывали, параметров в нее никаких не передавали. Вызывают ее позже:
console.log(half(stats)); // should be 28.015
Вот здесь уже ее вызывают, а результат ее выполнения уходит в console.log(). И вот здесь важно понять: в вызов функции half уходит параметр-объект stats. То есть в нашу функцию может быть передан любой параметр, или вообще не будет передан (javascript это позволяет). Другой вопрос что мы ожидаем в нашей функции. А в ней мы ожидаем, что придет объект, который содержит в себе свойства max и min. И не важно каково имя переменной этого объекта (это может быть вообще анонимный объект). А вот если придет не объект, а, к примеру, null или undefined, то у нас возникнет ошибка, потому что из них нельзя так свойства извлечь.

Подитожим: не важно какое имя у параметра функции, важно что мы в нее передаем.
Видимо этот коммент был случайно здесь создан, и относился к этому обсуждению.
>> именно конструктора, без свойств из прототипа?

Конструктор и прототип - это в общих чертах одно и то же, то есть базовая функция, с помощью которой быс создан конечный инстанс.
(a.__proto__.constructor === a.constructor) === true
Конечные сущности принято называть инстансами (instance). Если рассматривать теорию текущего урока, то Bird - это конструктор, а duck и canary - конечные инстансы.


А здесь при выполнении вообще не требуется проверка. Вижу, в других решениях такое применяется, но это излишнее, или, как любят говорить "масло масляное". Конструкция for ... in уже берет именно перечисляемые свойства объекта. Проверять их на собственность нет смысла. Оговорочка: на каждой итерации можно изменить исходный объект, так что в каких-то местах такое может понадобиться, но точно не в этом случае.

Поправочка: При удалении свойств объекта for in даже не будет это свойство перечислять. Пример:
const a = {name: "DSfsD", age: 16, legs: 2} for (const i in a) { console.log({...a}, i, a.hasOwnProperty(i) === true); delete a.age; } console.log('a', a); // {name: 'DSfsD', age: 16, legs: 2} 'name' true // {name: 'DSfsD', legs: 2} 'legs' true // a {name: 'DSfsD', legs: 2}
То есть, как мы видим, age даже не попало в перечисление.

Все комментарии