var foo;
var foo = 1; // можно стереть
function bar() {
var foo; // всплыло сюда. Этот foo – иной, чем верхний foo!
if (!foo) { // тут foo undefined, !foo === true
foo = 10; // выполняется, назначается 10
}
console.log(foo); // вывели 10
}
bar(); //--> 10
function filterByCategory(cat) {
const dataCats = $("[data-cat]");
if (cat == 'all') {
dataCats.removeClass("hide");
} else {
dataCats.each(function () {
if (cat == $(this).data('cat')) {
$(this).removeClass('hide');
} else {
$(this).addClass('hide');
}
});
}
}
$(function () {
const worksSlider = $('[data-slider="slick"]');
/* Filter
=====================*/
const filter = $("[data-filter]");
filter.on("click", function (event) {
event.preventDefault();
const cat = $(this).data('filter');
filterByCategory(cat);
});
filterByCategory('female');
});
re
с флагом g
сохраняет состояние – свойство lastIndex
– позицию, где последний раз был найден результат. И дальше ищет начиная с этого места.for (var i=0; i<10;i++) {
+ re.lastIndex = 0; // каждый раз начинать искать с 0
var txt = re.exec(a);
&&
он выше, чем у ||
. Поэтому выполняется так:pin.length == 4 || (pin.length == 6 && a == 1)
a
с 1
: т.к. метод test()
возвращает Boolean true
или false
, можно прямо проверятьif (a && (pin.length === 4 || pin.length === 6)) {
const validatePIN = (pin) => /^\d{4}(\d{2})?$/.test(pin);
Между началом и концом строки должно быть 4 цифры и, опционально, ещё 2.id
, после которого брать новости. Как получили ответ – показали принятые новости и сохранили в переменной id
для следующего запроса.'AND feed.time_update < ' . (int) $lastFeed['time_update']
оч. плохая практика склеивать строку запроса. Используйте биндинг параметров, что-то типа:$stmt = $conn->prepare("SELECT ..... AND feed.time_update < ?");
$stmt->bind_param($lastFeed['time_update']);
$stmt->execute();
$result = $stmt->fetchAll();
example.com/?text=%D0%A2%D0%B5%D0%BA%D1%81%D1%82
num=%D0%9D%D0%BE%D0%BC%D0%B5%D1%80
old=%D0%94%D0%B0%D0%BD%D0%BD%D1%8B%D0%B5
{"data":{"text":"Текст","num":"Номер","old":"Данные"}
var
больше не стоит использовать, вообще. Только let
и const
.var a = 5;
— тут происходит 2 вещи: function a()
уплывает наверх выше назначения a = 5
, которое оказывается после всех деклараций. Можно даже так:function a() {
return 10;
}
a = 5;
Это, по сути, и происходит в 1-м примере. localStorage
это возможность браузеров, а не особенность языка.