Ведь когда мы создаем переменную, то в нее копируется значение другой переменной и мы работаем с копией
Начав работать с языком Go начал придавать значение экономии памяти - не создавать лишних переменных.
this.content.querySelectorAll('.cell').forEach((cell) => {
let timer = null; // дескриптор отложенного обработчика одного клика
cell.addEventListener('click', (e) => {
if(timer)
clearTimeout(timer); // при каждом клике сбрасываем отложенный обработчик обработки одного клика
if(e.detail == 1) // на первом клике устанавливаем отложенный обработчик
timer = setTimeout(handleClickCell, 250); // Выполнение функции по одинарному клику после ожидания второго клика 250мс
if(e.detail == 2) // на втором - выполнение обработчика двойного клика
{
// благодаря счетчику detail в ивенте можем посчитать длину очереди непрерывных кликов, и в нужный момент выполнить функцию на втором клике
console.log('111');
}
} );
});
(NULL, '$val1', '$val2')
$api->dependency
class Node
{
protected function func1() {
}
}
class NodeA extends Node
{
public function FUNC2() {}
}
class NodeB extends Node
{
// Функция инициализации
public function __construct()
{
(new Api())->dependency(
function (?NodeA $a) {
$a->FUNC2(); // Метод успешно вызывется так как он public
$a->func1(); // Call to protected method Node::func1() from global scope
}
);
}
}
class Api {
function dependency(callable $dependency) {
if ($dependency instanceof Closure) {
$dependency = Closure::bind($dependency, null, null);
$dependency(new NodeA());
}
}
}
class Node
{
private array $whiteList = [
NodeA::class
];
protected function func1() {
$scope = debug_backtrace(2, limit: 2)[1]['class'];
if (!in_array($scope, $this->whiteList)) {
throw new Exception('Нельзя вызвать метод для данного класса '. $scope);
}
}
}
class NodeA extends Node
{
public function FUNC2() {}
}
class NodeB extends Node
{
// Функция инициализации
public function __construct()
{
(function (?NodeA $a) {
$a->FUNC2(); // Метод успешно вызывется так как он public
$a->func1(); // Нельзя вызвать метод для данного класса NodeB
})(new NodeA());
}
}
в 2013 на английском и только в 2016 году на русском, а это почти 10 лет назад,Глобальных измений за 10 лет было не так много, упражнения в этой книге в целом довольно интересные (если затык с ними то можно на гите поискать решения), поэтому в целом книга достаточно актуальная.
$(".js-answer").click(function() {
let __this = $(this);
__this.addClass("current");
setTimeout(function() {
__this.removeClass("current");
}, 1400);
});
$(".js-answer").click(function() {
$(this).addClass("current");
setTimeout(() => {
$(this).removeClass("current");
}, 1400);
});
UPDATE link_count SET count=count+? WHERE link_id=? and number=?
$sql = "UPDATE `list`
SET count1 = CASE WHEN id = ? AND ? = 1 THEN count1 - ? ELSE count1 END,
count2 = CASE WHEN id = ? AND ? = 2 THEN count2 - ? ELSE count2 END,
count3 = CASE WHEN id = ? AND ? = 3 THEN count3 - ? ELSE count3 END
WHERE id = ?";
$stmt = $conn->prepare($sql);
foreach ($data as $id => $value) {
$idParts = explode("-", $id);
$count = $value['count'];
$stmt->execute([$idParts[0], $idParts[1], $count, $idParts[0], $idParts[1], $count, $idParts[0], $idParts[1], $count, $idParts[0]]);
}