Size: a a a

NodeUA - JavaScript and Node.js in Ukraine

2021 November 20

M

Mark in NodeUA - JavaScript and Node.js in Ukraine
Не обов'язково константа
источник

M

Mark in NodeUA - JavaScript and Node.js in Ukraine
Є багато способів досягнути такої поведінки. Я б зробив через паршал
источник

M

Mark in NodeUA - JavaScript and Node.js in Ukraine
Типу partial, який отримує функцію, її аргумент (або декілька аргументів), і позицію аргументу/тів.
Віддає функцію з меншою arity, з якою уже закріплені аргументи в заданому порядку
источник

M

Mark in NodeUA - JavaScript and Node.js in Ukraine
Мені здається, що це чистіше, ніж передавати undefined
источник

M

Mark in NodeUA - JavaScript and Node.js in Ukraine
Вирішує ту саму проблему
источник

M

Mark in NodeUA - JavaScript and Node.js in Ukraine
+ такий підхід дає більше flexibility. Якщо мені потрібно буде поміняти дефолтні параметри, я можу просто зробити інший паршал, без того щоб лізти змінювати function definition.
источник

S

Serhii in NodeUA - JavaScript and Node.js in Ukraine
ніхто ж не проти того, що карінг має свої переваги
источник

S

Serhii in NodeUA - JavaScript and Node.js in Ukraine
питання в дефолтних значеннях, які інколи (як люди думають) треба. Як в цьому прикладі.
источник

M

Mark in NodeUA - JavaScript and Node.js in Ukraine
Не знаю, якщо людям комфортно передавати undefined аргументом функції, тоді звичайно це найпростіше рішення
Але воно дуже шкодить читабельності
источник

˸A

˸̧̨ ͅBlack Akula˸̧̨ ... in NodeUA - JavaScript and Node.js in Ukraine
Можно ещё так вызвать функцию: func.apply(null, [1,,3])
источник

M

Mark in NodeUA - JavaScript and Node.js in Ukraine
Ого
источник

M

Mark in NodeUA - JavaScript and Node.js in Ukraine
Я не знав
источник

M

Mark in NodeUA - JavaScript and Node.js in Ukraine
Так, це певно найкращий варіант
источник

S

Serhii in NodeUA - JavaScript and Node.js in Ukraine
пацани
источник

S

Serhii in NodeUA - JavaScript and Node.js in Ukraine
давайте я вам напишу кілька тестів, а ви напишете своє рішення.
источник

IB

Ivan Brezhnev in NodeUA - JavaScript and Node.js in Ukraine
🤣🔥
источник

M

Mark in NodeUA - JavaScript and Node.js in Ukraine
А можна ще в функцію передавати об'єкт, симулюючи іменовані аргументи. Тоді ще простіше буде
Якщо є ключ, функція бере його значення, якщо немає ключа, функція бере дефолтне значення зі свого внутрішнього об'єкту
источник

NK

ID:0 in NodeUA - JavaScript and Node.js in Ukraine
Группа с материалами по битве двух СТО, тут же будет ссылка на стрим и можно задавать вопросы https://t.me/nodejsornojs
источник

S

Serhii in NodeUA - JavaScript and Node.js in Ukraine
три тесткейси. Міняйте що хочете, аби набір аргументів був такий же.


'use strict';
//Your solution here
const func = (a, b = 2, c) => `a:${a} | b:${b} | c:${c}`;
//=========================

runTests(func, [
 { params: [1, 1, 1], expected: 'a:1 | b:1 | c:1' },
 { params: [1, undefined, 5], expected: 'a:1 | b:2 | c:5' },
 { params: [9, null, 5], expected: 'a:9 | b:2 | c:5' },
]);

//=========== test stuff
function runTests(func, testCases) {
 const results = testCases.map((t) => runTest(func, t.params, t.expected));
 if (results.some((r) => !r)) {
   console.log('TESTS FAILED!');
 } else {
   console.log('TESTS PASSED!');
 }
}

function runTest(func, params, expected) {
 const result = func.call(null, ...params);
 console.log(
   `running test for function ${func.name} with params ${params}. Result = ${result}. Expected = ${expected}`
 );
 if (result === expected) {
   return true;
 }
 return false;
}
источник

M

Mark in NodeUA - JavaScript and Node.js in Ukraine
Я збережу, і коли буде час напишу
источник