Где массив инициализируется сохраненным списком инициализатора?

Вы должны перебрать все элементы. Вы можете использовать onclick следующим образом:

let elements = document.querySelectorAll('div');
for (var x = 0; x < elements.length; x++) {
  elements[x].onclick = function(){
    this.style.fontSize = "20px";
  }
};
test
test
test

Пожалуйста, смотрите [ 114] addEventListener против onclick для различий.

5
задан Community 23 May 2017 в 11:47
поделиться

2 ответа

Сам массив будет на стеке. Будет немного кода записи в функцию, которая копирует значения, которые хранятся в некотором массиве без имени в глобальной области / области статического ЗУ в локальный массив на стеке. Вероятно, что глобальный/статичный массив без имени с начальными значениями находится в той же общей области памяти как строковые литералы.

Отметьте однако, что ни одно из этого не требуется стандартом - но это в значительной степени, как любой компилятор реализует его. Достаточно умный компилятор мог бы заметить, что значения являются просто увеличенными целочисленными значениями и могли бы получить сведения о цикле к init локальный массив,

(этот ответ принимает C/C++ - я не знаю, изменил ли Objective C какое-либо из этого).

9
ответ дан 14 December 2019 в 01:19
поделиться

Как Micheal сказал, где значения списка инициализатора будут сохранены, зависит от компилятора и уровней оптимизации. Например, gcc без оптимизации просто сгенерирует код для перемещения констант в соответствующие местоположения в массиве, т.е. фактические значения будут только сохранены в самом коде. Можно легко проверить то, что произойдет, если Вы не скомпилируете в объектный код, но позволите своему ассемблеру выхода компилятора вместо этого.

1
ответ дан 14 December 2019 в 01:19
поделиться
Другие вопросы по тегам:

Похожие вопросы: