var event = new MouseEvent('dblclick', {
'view': window,
'bubbles': true,
'cancelable': true
});
document.getElementById('button').dispatchEvent(event);
function nds( cost) {
return function() {
var _cost = cost;
var result = _cost * 1.13;
console.log( result.toFixed(2));
}
}
var a = nds(53);
var b = nds(12);
a(); // 59.89
b(); // 13.56
var total = 0;
function nds( cost) {
return function() {
var _cost = cost; // запомнили внутри цену
var result = _cost * 1.13; // добавили НДС
total += result; // добавили к общей сумме
console.log( "result:", result.toFixed(2), "total:", total.toFixed(2));
}
}
var a = nds(53);
var b = nds(12);
a(); // result: 59.89 total: 59.89
b(); // result: 13.56 total: 73.45
a(); // result: 59.89 total: 133.34
a(); // result: 59.89 total: 193.23
arr
как прототип:var arr = {
"name" : "Stive",
"age" : 29,
"all" : function() { return this.name + " " + this.age; }
};
var b = Object.create(arr);
b.name = "Bill";
b.age = 39;
b.all();
this
в arr
код для b
выполнится нормально и вернёт "Bill 39", а если в arr
вместо this
было прямое указание на arr
, то вернёт "Stive 29". ! ! ~ s.indexOf( substring)
– такая короткая запись означает «есть ли подстрока?»indexOf()
возвращает найденное положение подстроки в строке: число от 0 и больше; или –1, когда подстрока не найдена. На деле часто требуется из этого получить true
или false
– когда интересует лишь, есть подстрока или нет, а позиция её безразлична. Из –1 нам надо получить false, а из всего остального true.~
и логическое НЕ !
~
обладает замечательным свойством: только из –1 получается 0 (а из нуля –1): ~(-1) === 0
!
является логическим оператором и его результат – true или false. Например, !5 === false
, а !0 === true
.!!~
:!!~5 === true;
!!~0 === true;
!!~-1 === false;
indexOf()
, а в скобках перечислены несколько вариантов: (~s.indexOf('AAA') || ~s.indexOf('BBB'))
. ||
– это логическое ИЛИ. Проверяется слева направо, пока не найдётся первое выражение, которое конвертируется в true, и возвращается его значение как есть, без конвертации в true/false. Например:( false || 5) === 5;
( 0 || 0 || 1 || 0) === 1;
( 5 || 1 || true) === 5;
( false || 0) === 0;
~s.indexOf(substr)
будут проверяться до тех пор, пока какой-то не вернёт не-нулевое значение. setTimeout( ()=>{...}, 0)
:var promise = new Promise( function (ok, fail) {
setTimeout( function() {
console.log('1');
ok();
}, 0);
});
// Здесь функция обещания ещё не выполнена.
console.log('2');
promise.then(function () {
console.log('3');
});
// 2 1 3
var promise = Promise.resolve( value);
01234567890123
Widget with id
..|=>.......^
var str = "Widget with id";
alert( str.indexOf("Widget") );
// 0 – прямо с нулевой позиции найдено совпадение
alert( str.indexOf("id") );
// 1 – находится первое же совпадение, после "W" идёт "id":
// 01234567890123
// Widget with id
// .^............
alert( str.indexOf("widget") ); // –1 значит «не найдено». W не равно w
var sqlDT = "2014-09-12 00:00:00";
var BD = new Date( sqlDT.replace(' ','T'));
var Now = new Date();
BD.setMinutes( BD.getMinutes() + Now.getTimezoneOffset()); // в UTC
if( BD.getMonth() === Now.getUTCMonth()
&& BD.getDate() === Now.getUTCDate()
) {
// ура! День рождения!
}
var showSE = function( isSuccess, el) {
el.parentNode.classList.remove('error');
el.parentNode.classList.add('success');
el.nextElementSibling.InnerHTML = isSuccess ? "" : el.dataset.error;
}
var showError = showSE.bind(null, false);
var showSuccess = showSE.bind(null, true);
var AllUsers = {
777: {id: 777, name: "", email: ""},
123: {id: 123, name: "", email: ""},
}
function AddUser(name, email, id) {
AllUsers[ id] = {
id: id,
name: name,
email: email
}
}
var userId = 123, userEmail = "zuk@facebook.com";
AllUsers[ userId].email = userEmail;
$('.my_plus').click(function() {
var input = $(this).parent().find('.quant');
input = input.val(
(parseFloat(input.val()) + 1.22).toFixed(2)
);
input.change();
return false;
});