Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #11 (permalink)  
Старый 12.04.2020, 13:07
Кандидат Javascript-наук
Отправить личное сообщение для jaroslav.tavgen Посмотреть профиль Найти все сообщения от jaroslav.tavgen
 
Регистрация: 18.09.2014
Сообщений: 128

Сообщение от voraa Посмотреть сообщение
В первом правиле говорится про токен-нарушитель. Тоесть нечто такое, что делает синтаксическую конструкцию недопустимой.

Но конструкция }[ - вполне допустима

Array.prototype.sum = function (...arguments){returnthis.reduce(arguments);}[1,2,3]

Мы описали какую то функцию. Функция - это объект. К объекту применима операция [] для получения свойства по имени.
[1,2,3] - тут используется операция ',', которая дает значение последнего из выражений (3)
Т.е приведенный выше пример пытается взять значение свойства с именем '3' у объекта функции. Такого нет, поэтому undefined/
Спасибо большое! Офигеть, конечно. Никогда бы не подумал, что это работает именно так.

Почему все тогда почти никогда не ставят точки с запятой после декларации функций? Эта ситуация настолько редкая? Почти все пишут так:

function foo(){
  return 3;
}

без точки с запятой после закрывающей фигурной скобки.

Последний раз редактировалось jaroslav.tavgen, 12.04.2020 в 13:13.
Ответить с цитированием
  #12 (permalink)  
Старый 12.04.2020, 13:11
Кандидат Javascript-наук
Отправить личное сообщение для jaroslav.tavgen Посмотреть профиль Найти все сообщения от jaroslav.tavgen
 
Регистрация: 18.09.2014
Сообщений: 128

Сообщение от Nexus Посмотреть сообщение
jaroslav.tavgen, а что вы, собственно, сделать то пытаетесь?
На имплементацию метода «sum» это не похоже, на алиас базового метода «reduce» - тоже.
Алиас метода reduce.
Сообщение от Nexus Посмотреть сообщение
Хотите понять в чем у вас ошибка - дебажте, посмотрите, что у вас находится в переменной «arguments».
Дебагинг помочь не мог, т.к. до входа внутрь функции дело даже не доходило - сразу сообщение об ошибке про undefined.

Я так понял, что моей ошибкой было то, что вместо того, чтобы рассматривать переданный аргумент как функцию (function(args)) я рассматривал его как массив аргументов (function(...args))

Сообщение от Nexus Посмотреть сообщение
P.S. переопределять значение переменной «arguments» - не есть хорошо, лучше подберите своей переменной другое название, например «args»
Спасибо! Буду иметь в виду.
Ответить с цитированием
  #13 (permalink)  
Старый 12.04.2020, 13:22
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,112

Сообщение от jaroslav.tavgen
я рассматривал его как массив аргументов (function(...args))
и правильно делали в данном случае ...
вопрос на засыпку, как используя только Array.prototype.sum и функцию сложения, получить сумму двух массивов?
Ответить с цитированием
  #14 (permalink)  
Старый 12.04.2020, 13:23
Аватар для voraa
Профессор
Отправить личное сообщение для voraa Посмотреть профиль Найти все сообщения от voraa
 
Регистрация: 03.02.2020
Сообщений: 2,745

Сообщение от jaroslav.tavgen Посмотреть сообщение
Почему все тогда почти никогда не ставят точки с запятой после декларации функций? Эта ситуация настолько редкая?
Редкой бывает ситуация, когда оператор начинается с [ или с (

Например

let a= x + y
(a <4 || 8< a)? x+=10 : x-=10

В этом случае будет попытка вызвать функцию y(a <4 || 8< a)
или
let f = function () {...}
(a <4 || 8< a)? x+=10 : x-=10

То же - определили функцию и сразу пытаемся ее вызвать
Ответить с цитированием
  #15 (permalink)  
Старый 12.04.2020, 13:23
Аватар для SuperZen
Профессор
Отправить личное сообщение для SuperZen Посмотреть профиль Найти все сообщения от SuperZen
 
Регистрация: 08.11.2017
Сообщений: 642

зачем здесь деструктор?
Array.prototype.sum = function (...arguments)


еще пример:
return true

и
return
true
Ответить с цитированием
  #16 (permalink)  
Старый 12.04.2020, 13:29
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,112

jaroslav.tavgen,
как используя только Array.prototype.sum и функцию сложения, получить сумму двух массивов?
const fn = (a,b)=>a+b;
const a = [1,2,3];
const b = [4,5,6];
Array.prototype.sum = function(...args){ return this.reduce/* ... */};

console.log( /* ... */)//21

Последний раз редактировалось рони, 12.04.2020 в 13:33.
Ответить с цитированием
  #17 (permalink)  
Старый 12.04.2020, 13:29
Аватар для voraa
Профессор
Отправить личное сообщение для voraa Посмотреть профиль Найти все сообщения от voraa
 
Регистрация: 03.02.2020
Сообщений: 2,745

Сообщение от рони Посмотреть сообщение
вопрос на засыпку, как используя только Array.prototype.sum и функцию сложения, получить сумму двух массивов?
А функция сложения это что?
Ответить с цитированием
  #18 (permalink)  
Старый 12.04.2020, 13:37
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,112

Сообщение от voraa
А функция сложения это что?
fn = (a,b)=>a+b;
и наверно задание скорее для начинающих.
Ответить с цитированием
  #19 (permalink)  
Старый 12.04.2020, 13:43
Кандидат Javascript-наук
Отправить личное сообщение для jaroslav.tavgen Посмотреть профиль Найти все сообщения от jaroslav.tavgen
 
Регистрация: 18.09.2014
Сообщений: 128

Сообщение от рони Посмотреть сообщение
jaroslav.tavgen,
как используя только Array.prototype.sum и функцию сложения, получить сумму двух массивов?
const fn = (a,b)=>a+b;
const a = [1,2,3];
const b = [4,5,6];
Array.prototype.sum = function(...args){ return this.reduce/* ... */};

console.log( /* ... */)//21
const a = [1,2,3];
const b = [4,5,6];
Array.prototype.sum = function(arg){ return [...this, ...arg].reduce((acc,val)=>acc+val, 0)};

console.log(a.sum(b));

если я правильно понял задачу, конечно...
Ответить с цитированием
  #20 (permalink)  
Старый 12.04.2020, 13:46
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,112

Сообщение от jaroslav.tavgen
если я правильно понял задачу
направление правильное, но куда делись строки 1 и 4 из задания?
Ответить с цитированием
Ответ



Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Что в этом коде не так? nzbt Javascript под браузер 0 27.02.2019 15:27
Как в этом коде настроить промежуток на 10 сек ??? ilyas-> Элементы интерфейса 5 27.07.2013 04:54
То-ли лыжи не едут, толи... возможно ошибка в коде. AzriMan Общие вопросы Javascript 19 18.05.2009 16:07