name
и age
указывают на массивы, а они, как и любые объекты в JavaScript, передаются «по ссылке», т.е. передаётся указатель на место в памяти, где лежит массив. Прочитайте по ссылке «по ссылке» : ) — там действительно подробно и с картинками описывают проблему.this.save
оказываются те же самые массивы, что и в obj
. Меняете там, меняется тут, и наоборот. Разорвать порочную связь можно, например, грубоватым и не самым эффективным способом:const obj_copy = JSON.parse(JSON.stringify( obj ));
// создали действительно независимую «глубокую копию» объекта
Для нехитрого объекта без функций-методов и всяких Map/Set'ов это годится. const TIMEOUT = "TIMEOUT";
for (let i=0; i < 300; i++) {
await Promise.any([
Order(i), // то самое стороннее апи
new Promise((resolve) => setTimeout(() => resolve(TIMEOUT), 3 * 6e4))
])
.then((result) => {
if (result === TIMEOUT) {
console.log(TIMEOUT);
} else {
console.log("Order fulfilled");
}
})
}
b.style.width = 5 + 'px';
(function (){
let a = 75; // видимо, начальная ширина?
const out = document.querySelector('.out-1');
const update = (delta = 0) => out.style.width = `${a += delta}px`;
update();
document.querySelector('.btn1')
.addEventListener('click', () => update(10));
// так можно добавить вторую кнопку для укорачивания:
document.querySelector('.btn2')
.addEventListener('click', () => update(-10));
})();
parentNode
— лишнее дублирование инфы.{ id: 1, address: [0], children: [
{ id: 2, address: [0, 0], children: [
{ id: 3, address: [0, 0, 0], },
{ id: 99, address: [0, 0, 1], },
{ id: 999, address: [0, 0, 2], },
]}
]}
Map()
: [0]: {title: 'первый', id: 1, }, // поле children убрали
[0, 0]: { title: 'второй', id: 2 },
[0, 0, 0]: { title: 'третий', id: 3 },
hello.html.twig
:Привет, {{ name }}!
,echo $twig->render('hello.html.twig', ['name' => 'Хабр']);
передаются имя темплейта и данные, которые там нужно подставить.var url = '?email=email@mail.ru&login=1298384';
const params = new URLSearchParams(url); // начальный знак ? игнорируется
params.get("email") // "email@mail.ru"
params.get("login") // "1298384"
${ }
можно помещать не любой код, а выражения. Что-то, имеющее значение: `Привет, ${ ["м", "р"].join("и") }!`
audio
наследует свои свойства и методы от HTMLMediaElement. Например, можно читать или устанавливать его свойство volume.number factorization
function test({ a = "Aa", b = "bar", c = "Цеце" }) {
console.log({a, b, c});
// что-то делаем с переменными a, b, c:
console.log(`${a} ${c} пошла в ${b}`);
}
test({ a: "100" }); // { a: "100", b: "bar", c: "Цеце" }
// 100 Цеце пошла в bar
// auth.js
var myAuth = "secret";
// logic.js
function logic() {
console.log(myAuth);
}
<script>
var myAuth = "secret";
function logic() {
console.log(myAuth);
}
</script>
Поэтому все друг друга видят, слышат и дружат )