There is no way to clear the session history or to disable the back/forward navigation from unprivileged code.
Какие еще преимущества SSD кроме скорости?Преимущество у SSD одно - скорость записи и чтения мелкими блоками. Как правило речь идет о блоках размером 4к.
Побитовые операторы работают следующим образом:
1. Операнды преобразуются в 32-битные целые числа, представленные последовательностью битов. Дробная часть, если она есть, отбрасывается.
2. Для бинарных операторов – каждый бит в первом операнде рассматривается вместе с соответствующим битом второго операнда: первый бит с первым, второй со вторым и т.п. Оператор применяется к каждой паре бит, давая соответствующий бит результата.
3. Получившаяся в результате последовательность бит интерпретируется как обычное число.
const opts = this.selectedOptions;
const data = {
count: optionCount || 0, // значения по умолчанию
name : optionName || '',
info : optionChars || '',
price: optionPrice || '',
value: optionValue || '',
}
switch (type) {
case 'p':
case 'c':
case 'm':
case 'radio':
case 'button':
opts[type] = data;
break;
case 'disk':
opts[type + t.diskNumber] = data;
break;
case 'checkbox':
opts[type][`check${data.checkId}`] = data;
}
6
и 2
— по две. Из-за этого неопределённость среди них.>>> frequency_sort([4, 6, 2, 2, 6, 4, 2, 4, 4])
[4, 4, 4, 4, 2, 2, 2, 6, 6]
def frequency_sort(items):
return sorted(items, key=lambda v: (items.count(v), v), reverse = True)
function add(left, right) {
const typeLeft = typeof left;
const typeRight = typeof right;
if(typeLeft === 'string') {
return left.concat(right);
}
if(typeRight === 'string') {
return right.concat(left);
}
if(canConvertToNumber(left, typeLeft) && canConvertToNumber(right, typeRight)) {
return Number(left) + Number(right); // тут уже не перегруженный вариант + иначе будет бесконечная рекурсия
}
if(typeLeft === 'bigint' && typeRight === 'bigint') {
return left + right; // опять не перегруженный вариант
}
if(
(typeLeft === 'bigint' && canConvertToNumber(right, typeRight))
|| (typeRight === 'bigint' && canConvertToNumber(left, typeLeft))
) {
// если предыдущий if не прошел, а проходит этот
// то мы складываем bigint с не bigint, а так нельзя
throw new TypeError('Cannot mix BigInt and other types, use explicit conversions');
}
// во всех остальных случаях приводим к строке:
return String(left).concat(right);
}
function canConvertToNumber(item, type) {
return item === null || type === 'number' || type === 'boolean' || type === 'undefined';
}
+
является особенным оператором, исключением, отличающимся от других математических операторов.Почти все математические операторы выполняют численное преобразование. Исключение составляет +.Подробнее: https://learn.javascript.ru/type-conversions
Если одно из слагаемых является строкой, тогда и все остальные приводятся к строкам.
Тогда они конкатенируются (присоединяются) друг к другу:
alert( 1 + '2' ); // '12' (строка справа) alert( '1' + 2 ); // '12' (строка слева)
'42' / 2 // 21
'42' - 2 // 40
'42' * 2 // 84
'42' + 2 // "422" ¯\_(ツ)_/¯
1 + 2 + 3 + 4 + 5 // 15
1 + 2 + 3 + '4' + 5 // "645"
+
работает слева-направо. Поэтому 1+2+3
всё ещё число, а дальше '4'
заставляет переключиться на строки.