function isEven(num) {
return num % 2 === 0;
}
function dropEvenElems(list) {
var result = [],
len = list.length, i;
for (i = 0; i < len; i += 1) {
isEven(i) && result.push(list[i]);
}
return result;
}
var arr = ['а','б','в','г', 'д'];
dropEvenElems(arr);
const you = { device: 0, accessory: 0, availableMoney: null };
handle(99.99, 9.99, 0.08, you);
function handle(phone, accessory, tax, customer) {
const availableMoney = parseInt(prompt('Сколько денег у вас не счету?', ''), 10);
if(Number.isNaN(availableMoney) || availableMoney <= 0) return alert('Остаток на счету не является положительной суммой!');
customer.availableMoney = availableMoney;
if(!confirm('Купить телефон?')) return purchaseNothing(); // ты не хочешь покупать девайс о_0
const phonePrice = getRealPrice(phone, tax); // стоимость девайса с учётом налогов
if(availableMoney < phonePrice) return phoneBuyingFailed(availableMoney, phonePrice); // девайс не купить :(
if(!confirm('Купить акссесуар?')) return purchasePhone(phonePrice, customer); // ты хочешь девайс, но без акссесуара :|
const comboPrice = phonePrice + getRealPrice(accessory, tax); // стоимость трубы и акссесуара вместе (комбо) с учётом налогов
if(availableMoney > comboPrice) return purchaseCombo(comboPrice, customer); // денег хватило на всё!
comboBuyingFailed(availableMoney, comboPrice); // акссесуар точно мимо...
return (confirm('Вы всё ещё хотите приобрести только гаджет?')) // когда пролетел с акссесуаром
? purchasePhone(phonePrice, customer)
: purchaseNothing;
}
function purchaseNothing() {
return alert('Очень жаль видеть вас уходящим...');
}
function purchasePhone(price, customer) {
alert('Вы приобрели девайс за ' + price + '$. Поздравляем с покупкой!'); // бабла хватило на всё!
console.log('Your results:');
return { device: 1, accessory: 1, availableMoney: +fixNumb(customer.availableMoney - price) };
}
function purchaseCombo(price, customer) {
alert('Вы приобрели девайс вместе с акссесуаром за ' + price + '$. Поздравляем с покупкой!'); // бабла хватило на всё!
console.log('Your results:');
return { device: 1, accessory: 1, availableMoney: +fixNumb(customer.availableMoney - price) };
}
function phoneBuyingFailed(total, price) {
alert(
'К сожалению, у вас недостаточно средств на счету(' + total + '$).\n' +
'Стоимость гаджета с учётом налогов - ' + price + '$'
);
}
function comboBuyingFailed(total, price) {
alert(
'К сожалению, у вас недостаточно средств на счету(' + total + '$).\n' +
'Стоимость гаджета вместе c акссесуаром с учётом налогов - ' + price + '$'
);
}
function fixNumb(n) {
return n.toFixed(2);
}
function getRealPrice(n, tax) {
return +fixNumb((n + (n * tax)));
}
function sum () {
return arguments[0] + arguments[1];
}
function sum (x, y) {
return x + y;
}
data-react-checksum
клиетского приложения и серверного. Если совпадают, это означает, что если мы "поднимем" клиентское приложение(дорогая операция), то что мы получим будет совпадать с тем, что отправил сервер. Выходит, что этого можно избежать. Именно это и делает реакт, просто копирует полученный на сервер DOM в клиентское приложение.let array = Array.from({ length: 10 }, (v, k) => k);
const fn = (el) => {
setTimeout(() => { console.log(el) }, 100 * el);
return el * 2;
};
console.log(array.map(fn));
d
- это NodeList (список узлов), не имеющий метода hasAttribute()
var tags = ['div', 'span', 'ul', 'li', 'p', 'script', 'h1', 'h2'];
var forEach = Array.prototype.forEach
tags.map(function(tag) {
var list = document.querySelectorAll(tag);
forEach.call(list, function(el) {
el.className && console.log(el.className)
})
})
display: none
, затем когда при прокрутке добавляешь класс .top-nav-collapse
элементу nav
возвращаешь гамбургер через display: block
nav navbar-nav navbar-right navbar-border
добавляешь айдишку mobileNav
var mobileNav = document.getElementById('mobileNav')
var navbarToggler = document.querySelector('.navbar-toggle')
mobileNav.addEventListener('click', onMobileNavLink)
function onMobileNavClick(e) {
if (e.target && e.target.nodeName === 'A') { // если нажал на ссылку в пределах меню
navbarToggler.click() // закрываешь меню
}
npm install -g yo
npm install -g webapp-generator
npm install -g gulp-cli bower
yo webapp
чтобы поднять каркасvar items = Array.prototype.slice.call( document.querySelectorAll('div') )
var products = [
{name:"Grapefruit", calories: 170, color: "red", sold: 8200},
{name:"Orange", calories: 160, color: "orange", sold: 12101},
{name:"Cola", calories: 210, color: "caramel", sold: 25412},
{name:"Diet cola", calories: 0, color: "caramel", sold: 43922},
{name:"Lemon", calories: 200, color: "clear", sold: 14983},
{name:"Rapsberry", calories: 180, color: "pink", sold: 9427},
{name:"Root Beer", calories: 200, color: "caramel", sold: 9909},
{name:"Water", calories: 0, color: "clear", sold: 62123}
];
var mapper = {
'sold': function (product) {
console.log('Продукт: ' + product.name + ' был продан ' + product.sold + ' раз.');
},
'name': function (product) {
console.log('Название продукта: ' + product.name);
},
'calories': function (product) {
console.log('Продукт: ' + product.name + ' имеет ' + product.calories + ' калорий.');
},
'color': function (product) {
console.log('Продукт: ' + product.name + ' имеет ' + product.color + ' цвет.');
}
};
printBy(products, 'calories');
function printBy(collection, prop) {
collection.map(mapper[prop]);
}