if(arguments[i] === 0 ) return 0;
function multiply() {
let len = arguments.length;
if( 0 === len) return 0;
for (let i = 0, calc = 1; i < len; i++) {
if (arguments[i] === 0) return 0;
calc = calc * arguments[i];
}
return calc;
}
IvanSidorov@mail.ru
, а иногда IVANsidorov@Mail.Ru
var
всегда «сползает» наверх функции – это называется var hoisting («поднятие или всплытие переменных»). Объявление переменных (как и любые другие объявления) обрабатываются до выполнения кода. Где бы не находилось объявление, это равнозначно тому, что переменную объявили в самом начале кода.
for( /*...*/ ) {
var i = 3;
// ...
}
var i;
// ...
for( /*...*/ ) {
i = 3;
// ...
}
.forefront-element {
-webkit-transform: translateZ(999px) scale(.7);
transform: translateZ(999px) scale(.7);
z-index: 1;
}
.base-element {
-webkit-transform: translateZ(0);
transform: translateZ(0);
z-index: 4;
}
.background-element {
-webkit-transform: translateZ(-999px) scale(2);
transform: translateZ(-999px) scale(2);
z-index: 3;
}
var tmpl = "http://site.ru/%RANDOM%.jpg"
%RANDOM%
на очередное число.var All = [], i, N = 4, Selected = [], pos;
for( i = 1; i <= 100; i++) All.push(i);
// в массиве All теперь числа от 1 до 100
while( All.length > 0 && Selected.length < N) { // пока есть откуда брать и ещё не набрали N чисел
pos = Math.floor( All.length * Math.random()); // случайный индекс из оставшихся элементов
// Из массива All значение удаляется, он становится короче.
// Это гарантия неповторения одинакового числа.
Selected.push( All.splice( pos, 1));
}
// в массиве Selected теперь N случайных неповторяющихся чисел из диапазона от 1 до 100
var result = [];
while( Selected.length) { // пока в массиве есть выбранные числа
result.push( // в результат вставляем..
tmpl.replace( // ..копию строки tmpl, в которой заменили..
'%RANDOM%', // ..подстроку %RANDOM%
Selected.pop()) // ..на число, которое взяли из Selected.
// взятое число из Selected удалилось, массив стал короче.
);
}
/* результат, массив строк: [
"http://site.ru/45.jpg",
"http://site.ru/29.jpg",
"http://site.ru/46.jpg",
"http://site.ru/97.jpg"
] */
var re = new RegExp('(\\d+\.?\\d+%)', 'g');
"If 43 is after a 999.99% reduction, then it was"
.replace( re, '<mark>$1</mark>')
/*
If 43 is after a <mark>999.99%</mark> reduction, then it was
*/
/**
* Make Dates according to selected days of week till the specified date
* @param Array weekdays: 0 - Sunday, 1 - Monday, ..
* @param Mixed Date or String - last day of range
*
* @return Array of Date objects
*/
function getDates( weekDays, lastDate) {
if(typeof lastDate === 'string') lastDate = new Date(lastDate);
var today = new Date(), dow, i, D, datesPool = [], result = [];
today.setHours(0);
today.setMinutes(0);
today.setSeconds(0);
dow = today.getDay();
for(i=0; i<7; i++) {
if( !~weekDays.indexOf( (dow + i)%7)) continue;
D = new Date();
D.setTime( today.getTime());
D.setDate( D.getDate() + i);
if( D.getTime() > lastDate.getTime()) continue;
datesPool.push( D);
}
if( datesPool.length === 0) return result;
while(true) {
for( i = 0; i < datesPool.length; i++) {
D = datesPool[i];
if( D.getTime() > lastDate.getTime()) return result;
if( result.length > 1000) return result;
result.push( "" + D.getDate() + "." + (1 + D.getMonth()) + "." + D.getFullYear().toString().substr(2));
D.setDate( D.getDate() + 7);
}
}
}
getDates( [2,3], '2017-07-31') // 19.7.17,25.7.17,26.7.17
Object.keys(App)
и вызвать каждую:var App = {
Function_1: function(){ console.log(1); },
Function_2: function(){ console.log(2);},
};
Object.keys(App).forEach( e => App[e]() );
Object.values(App).forEach( Function.prototype.call, Function.prototype.call);
не используйте этот вариант в production! parseInt( $('.num').first().text())
var $el = $('#container'), digits = $el.children().detach();
digits.sort(function(a,b){
return parseInt($(a).text()) - parseInt($(b).text());
});
$el.append(digits);
$('.num').each(function(i,e){ $(e).text(++i)});
false
и число 0
, которые не будем считать пустым значением.var data = {1: "", 2: "123", 3:""};
function anyEmpty(obj) {
var p, v;
for( p in obj) {
v = obj[p];
if( !obj.hasOwnProperty(p)) continue;
if( v === false || v === 0) continue;
if( !v ) return true;
}
return false;
}
anyEmpty(data) // true