Toutes les fonctions que vous créez sont sensibles à la casse.
Les guillemets simples (« chaîne ») et les guillemets doubles (« chaîne ») n'ont pas de signification particulière dans JavaScript. Les différences peuvent être utilisées pour créer Mais en principe général, la plupart des développeurs WEB choisissent d'utiliser des guillemets simples au lieu de guillemets doubles, car la spécification XHTML exige que toutes les valeurs d'attribut XHTML soient placées entre guillemets doubles.
JavaScript ne prend pas en charge. surcharge. En JavaScript, lorsqu'un script est exécuté, il ne prend pas en compte les paramètres lors de la définition de la fonction, mais utilise directement la dernière fonction définie dans la chaîne de portée. Cela signifie qu'il n'y aura toujours qu'une seule instance d'une fonction portant le même nom
La fermeture est un concept lié à la portée. Elle fait référence à la fonction interne même une fois la fonction externe terminée. exécution et se termine. Après cela, vous pouvez toujours accéder aux propriétés de sa fonction externe. Lorsqu'une variable ou une méthode est référencée, JavaScript analysera le domaine d'utilisation le long de la chaîne de domaines d'utilisation formée par le chemin d'exécution de l'objet, recherchera la valeur la plus récemment définie de la variable et utilisera cette valeur une fois trouvée.
function initAnchors(event){ for (var i=1; i <=3; i++){ var anchor = document.GetElementById('anchor' + i); anchor.attachEvent('onclick', function() { alert('my id is anchor' + i); }); } }
Supposons qu'il y ait trois éléments A dans la page, avec des identifiants allant de Anchor1 à Anchor3. Le programme enregistre les événements onclick pour les trois éléments A. En cliquant sur l'élément A, vous affichez "mon identifiant est AnchorX". mais en fait, ce n'est pas le cas lors de l'exécution. Cliquer sur chaque élément A affiche "mon identifiant est Anchor4". Pourquoi ? Parce que la valeur de i est en fait obtenue à partir de la chaîne de domaines lorsque l'événement de clic se produit, initAnchors() a été exécuté et la valeur de i est égale à 4. La solution peut être la suivante :
function registerAnchorListner(anchor,i){ anchor.attachEvent('onclick', function() { alert('my id is anchor' + i); } } function initAnchors(event){ for (var i=1; i <=3; i++){ var anchor = document.GetElementById('anchor' + i); registerAnchorListner(anchor,i); } } var anchor = document.GetElementById('anchor' + i); anchor.attachEvent('onclick', function() { alert('my id is anchor' + i); });
Les objets d'itération sont souvent utilisés lors de l'écriture de scripts, comme suit :
var list = [1,2,3,4]; for(var i = 0;i < list.length; i++){ alert(list); }
Une autre méthode d'itération alternative consiste à utiliser une boucle for Itérer sur chaque attribut situé dans (in)list :
for(var i in list){ alert(list); }
À ce stade, vous obtenez le même résultat qu'en utilisant la méthode d'itération précédente, car list est un objet Array.
Cependant, vous devez être très prudent lorsque vous utilisez la méthode for(var i in item) pour manipuler des objets similaires à des tableaux mais pas à des tableaux, comme suit
var all=document.getElementsByTagName('*'); for(var i in all){ //对照all元素进行某些操作 }
Dans ce processus d'itération, i's Les valeurs seront respectivement égales à length, item et nomméeItem, ce qui est susceptible de provoquer des erreurs inattendues dans le code. Dans certains cas, vous pouvez utiliser la méthode hasOwnProperty() de l'objet pour éviter ce problème. Si les propriétés ou méthodes de l'objet ne sont pas héritées, la méthode hasOwnProperty() renvoie true. Autrement dit, la vérification ici n'implique pas les propriétés et les méthodes héritées d'autres objets, mais uniquement les propriétés créées directement dans l'objet spécifique lui-même, telles que les éléments affectés à un tableau. Par conséquent, si vous utilisez cette vérification dans une boucle for, la boucle ignorera l'attribut length, car length n'est pas un véritable attribut du tableau all, mais un attribut hérité de l'objet NameNodeMap qui dérive le tableau all
var all=document.getElementsByTagName('*'); for(var i in all){ if(!all.hasOwnProperty(i)) continue; //对照all元素进行某些操作 }
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!