Почему в данном случае выводится 2 пустых массива? Ведь в коде функции сначала массиву присваивается пустой массив, а потом добавляется значение.
entity
- это переменная внутри функции и существует она до окончания работы функции. Когда, функция вызывается, создается переменная entity
и она содержит переданной значение (массив), далее вы просто перезаписываете эту функцию новым массивом и никаких изменений с изначально переданным массивом не происходит. Если убрать перезапись переменной новым массивом - то будет доступен переданный массив и его изменение. Проще всего представить, что переменная - это как коробка, в которую можно что-то положить. Если туда положить что-то новое - старое оттуда удалится. entity
внутри функции перестала указывать на тот же массив, что и fruits
,function loadEntities(entity, item) {
// тут entity из аргументов указывает туда же, куда и fruits
// можно вызывать методы того, внешнего массива, Те же push(), splice()
entity = []
// а тут entity стала указывать в другую сторону, на новый пустой массив
// fruits это уже никак не касается
entity.push(item)
// положили что-то в никчёмный массив
}
0
.const fruits = []; // навсегда
loadEntities(fruits, 'banana');
console.log(fruits);
loadEntities(fruits, 'apple');
console.log(fruits);
function loadEntities(entity, item) {
entity.length = 0; // массив тот же, но пуст
entity.push(item);
}
entity.splice(0, entity.length);
Node js на сервере и, скажем, webgl на клиенте
document.querySelector("button").onclick = run;
select
t3.Continent,
t3.Region,
sum(t3.Countries),
sum(t3.LifeDuration),
sum(t3.Population),
sum(t3.Cities),
sum(t4.Languages)
from
(
select
t1.Code,
t1.Continent,
t1.Region,
t1.Countries,
t1.LifeDuration,
t1.Population,
t2.Cities
from
(
select
Code,
Continent,
Region,
count(Name) as Countries,
ROUND(AVG(LifeExpectancy), 2) as LifeDuration,
SUM(Population) as Population
from country
group by Code,Continent,Region
) t1 left join
(
select
CountryCode,
count(Name) as Cities
from city
group by CountryCode
) t2 on t2.CountryCode = t1.Code
) t3 left join
(
select
CountryCode,
count(Language) as Languages
from countrylanguage
) t4 on t4.CountryCode = t3.Code
group by t3.Continent,t3.Region