// функции "строительные кирпичи":
// у нас есть каррированая функция суммирования
const add = a => b => a + b;
// и есть функция композици
const compose = (f, g) => v => f(g(v));
// бизнес логика:
// ее просто вычислим из "кирпичей"
const f = compose(add(5), add(3));
// грязные хелперы из рантайма языка, но я их напишу, чтоб пример работал:
function getInput() { return Math.floor(Math.random() * 10); }
function print(s) { console.log(s); }
// точка входа
function main() {
const v = getInput();
const r = f(v);
print(r);
}
const add = a => b => a + b;
const f = v => add(5)(add(3)(v));
const f = v => (b => 5 + b)((b => 3 + b)(v));
const f = v => 5 + 3 + v;
const f = v => 5 + 3 + v;
// грязные хелперы из рантайма языка:
function getInput() { return Math.floor(Math.random() * 10); }
function print(s) { console.log(s); }
// точка входа
function main() {
const v = getInput();
const r = f(v);
print(r);
}
// грязные хелперы из рантайма языка:
function getInput() { return Math.floor(Math.random() * 10); }
function print(s) { console.log(s); }
// точка входа
function main() {
const v = getInput();
const r = 8 + v;
print(r);
}
async function get_user_name() {
try {
let user_data = await AsyncStorage.getItem('user_data') || 'none';
let parse = JSON.parse(user_data);
return parse.user_id;
} catch (error) {
// Error retrieving data
console.log(error.message);
}
}
(async () => {
const user_id = await get_user_name();
// здесь user_id уже "дождались", его можно в другую функцию отдать, в том числе в синхронную
console.log(user_id);
})()
async function test() {}
console.log(test()); // Promise
// f чистая
function f(params) {
// не смотря на то, что возвращаемая функция содержит сайд эффект
// но мы ее просто возвращаем как результат, а не запускаем
return () => doEffectWith(params);
}
const getResult = () => ({ok: true, data: 1});
let result;
if(result = getResult(), result.ok) {
console.log(result.data);
}
И да, нормально так писать не стоит, но после оптимизаций код вполне может превратится в такой, и нужно уметь его читать. Как раз определиться я не могу...
{
"[javascript]": {
"editor.defaultFormatter": "dbaeumer.vscode-eslint"
}
}
Array.from({length: 256}, (_, i) => i).join(" | ")