const cancelable = fn => { // Создаётся функция cancelable, которая принимает функцию и сохраняет в переменную fn
const wrapper = (...args) =>{ // Создаётся функция-обёртка, которая принимает любой набор аргументов
if(fn) return fn(...args) // Если в cancelable была передана функция, то вызывает её с необходимыми аргументами
}
wrapper.cancel = () => fn = null // Добавляет свойство во wrapper для очистки переменной fn
return wrapper // Возвращает обёртку
}
const fn = par =>{ // Функция, которая оборачивается в декоратор со своим аргументом
console.log('Function called, par:',par)
}
const f = cancelable(fn) // Создаёт обёртку вокруг fn
f('first') // Function called, par: first
f.cancel() // fn является переменной внутри cancelable, здесь мы её обнуляем
f('second') // Ничего не выводит, потому что условие у wrapper отрабатывает, только если функция есть
от выбора библиотек
что значит код
ubfx r0, r0, #1, #1
-- извлечь битовое поле шириной 1 бит (правая единица) начиная с бита №1 (левая единица) из регистра r0 (правый r0) и поместить результат в r0 (левый r0).bx lr
-- перейти по адресу в регистре lr, обычно это возврат из подпрограммы.какая между ними разница
ubfx r0, r0, #1, #1
ubfx r0, r0, #2, #1
что я делаю не так
switch (expression) { // expression - это какое-то выражение. Тоесть значение одно.
case variant1: // variant1 и variant2 - это тоже какое-то выражение. Тоесть тоже ровно одно значение.
// ...
break;
case variant2:
// ...
break;
default:
// ...
break;
}
// Вот в такое
const value = expression;
if(value === variant1) {
//...
} else if (value === variant2) {
//...
} else {
// ...
}
let etalonCity1 = ['Самара', 'Архангельск'];
switch (arg) {
case etalonCity1[1]: // if (arg === etalonCity1[0])
//to-do
break;
case etalonCity1[0]: // if (arg === etalonCity1[1])
//to-do
break;
default:
//to-do
console.log('Условия сравнения не совпали');
break;
}
a === b ? console.log('true') : console.log('false');
Как происходит доступ к эл. массива на уровне ядра?
Например массив Int* arr = new int[1024*1024*1024] он как храниться?
А физическая, для массива то же? Ведь, так будет доступ намного быстрее?
получается эмулятор каждый адрес вычислять что ли?
с какой-либо из «сторон дела»: пользователя, верстки, программирования, поисковых систем?
Promise.resolve(value)
- это статический метод, возвращающий промис в состоянии fulfilled с указанным значением.new Promise((resolve) => resolve(value))
И можно как-то выполнить промис без аргументов?Что значит "выполнить"? Создать можно, сменить статус с pending на fulfilled нельзя, на rejected можно по исключению.
new Promise((แก้ไข) => แก้ไข('Решено'));
//Promise { <state>: "fulfilled", <value>: "Решено" }
const obj = new Proxy({}, {
get(target, key) {
const lowerKey = key.toLowerCase();
return target[Object.hasOwn(target, lowerKey) ? lowerKey : key];
},
set(target, key, val) {
target[key.toLowerCase()] = val;
return true;
},
has(target, key) {
return key in target || key.toLowerCase() in target;
},
defineProperty(target, key, descriptor) {
return Object.defineProperty(target, key.toLowerCase(), descriptor);
},
deleteProperty(target, key) {
return delete target[key.toLowerCase()];
},
getOwnPropertyDescriptor(target, key) {
return Object.getOwnPropertyDescriptor(target, key.toLowerCase());
},
});