<!DOCTYPE>
<html>
<head>
<link rel="stylesheet" href="styles.css"/>
<body>
<ul id="people-list"></ul>
<script src="app.js"/>
</body>
</head>
</html>
***app.js***
var people = ["alf","kay","jay","may"];
var list = document.getElementById("people-list");
for(var i =0; i< people.length; i++){
var person = people[i];
var element = document.createElement("li");
(function(){
var person = person;
element.innerText = person;
element.addEventListener("click",function(){
alert("You clicked on "+ person);
});
}());
list.appendChild(element);
}
Warum ist das „Person“ Variable im globalen Bereich erstellt nicht in der IIFE verwiesen wird und erzeugt daher eine Liste von undefineds aber dann einer Änderung in den Variablennamen aus (Beispiel var. Person zu var person2 und nachfolgende Änderung in der Warnung) in IIFE macht den Code richtig funktioniert.Verwirrung über Umfang und Hebt in Javascript
'person'isn't im globalen Bereich geschaffen. Wenn Sie eine Variable ohne 'var'-Definition erstellen, wird sie dem globalen Gültigkeitsbereich zugewiesen. Sonst wird es in seinem entsprechenden Umfang erstellt. – Aer0
Und 'var person = person' ist sinnlos –
Aber vor dem IIFE gibt es eine Personenvariable, die im globalen Geltungsbereich erstellt wird, der die verschiedenen Personenindizes gleichgesetzt werden. Habe ich recht? –