И неужели так быстро могли изюзаться чипы памяти?
event.preventDefault()
внутри пассивного обработчика. А обработчики для тач-событий пассивны по умолчанию.preventDefault()
, либо регистрировать обработчик как-то так:element.addEventListener(handleEvent, { passive: false });
{
"name": "project name",
"version": "1.0.0",
"description": "Landing page",
"main": "gulpfile.js",
"scripts": {
"editorconfig": "editorconfig-cli",
"stylelint": "stylelint 'source/sass/**/*.scss' --syntax scss",
"test": "npm run editorconfig",
"build": "gulp style",
"start": "gulp [task_name]"
},
"author": "Vasya Pupkin",
"license": "ISC",
...
function myApiFunc(callback)
{
/*
* Пример некорректного перехвата исключений
* в асинхронных операциях
*/
try {
doSomeAsynchronousOperation(function (err) {
if (err)
throw (err);
});
} catch (ex) {
callback(ex);
}
}
let datestring = document.querySelector('#date').innerText; // получаем дату "Ч"
let regexp = /(\d{2})\.(\d{2})\.(\d{4})/;
let dateX = new Date(datestring.replace(regexp, '$2/$1/$3')); // парсим из нее дату с заменой строки в понятный JS формат (имеется в виду же 1 марта?)
let dateToday = new Date(); // дата на момент захода на страницу
let days = Math.floor((dateX - dateToday) / 86400000) // количество целых дней до ожидаемого дня
const $ = selector => document.querySelectorAll(selector)
$('#hello .world').forEach(...)
const $ = selector => Array.from(document.querySelectorAll(selector))
2-й Сильно сокращает кол-во символов в файле, но не известно, на сколько быстрВо-первых, если используется gzip, то разница в размере с первым вариантом незначительная. Во-вторых, сделайте бенчмарк и узнаете (спойлер алерт - это экономия на спичках).
var player = {x:200, y:200, el:document.getElementById('player')};
player.el.style.left = '' + Math.round(player.x) + 'px';
player.el.style.top = '' + Math.round(player.y) + 'px';
var delta = {x:0, y:0};
document.addEventListener('keydown', function(e){
if( e.key == 'ArrowRight') delta.x = 1;
else if(e.key == 'ArrowLeft') delta.x = -1;
else if(e.key == 'ArrowUp') delta.y = -1;
else if(e.key == 'ArrowDown') delta.y = 1;
});
document.addEventListener('keyup', function(e){
if( e.key == 'ArrowRight') delta.x = 0;
else if(e.key == 'ArrowLeft') delta.x = 0;
else if(e.key == 'ArrowUp') delta.y = 0;
else if(e.key == 'ArrowDown') delta.y = 0;
});
var ts = null;
function step(timestamp) {
if(!ts) ts = timestamp;
var passed = timestamp - ts;
//if(passed < 200) return window.requestAnimationFrame(step);
ts = timestamp;
if(delta.x || delta.y) {
player.x += delta.x * passed / 10;
player.y += delta.y * passed / 10;
player.el.style.left = '' + Math.round(player.x) + 'px';
player.el.style.top = '' + Math.round(player.y) + 'px';
};
window.requestAnimationFrame(step);
}
window.requestAnimationFrame(step);