Maison  >  Article  >  interface Web  >  Des exemples détaillés expliquent les inconvénients de l'utilisation de var pour déclarer des variables

Des exemples détaillés expliquent les inconvénients de l'utilisation de var pour déclarer des variables

WBOY
WBOYavant
2022-08-09 16:01:261742parcourir

Cet article vous apporte des connaissances pertinentes sur javascript, qui présente principalement les problèmes liés à l'utilisation insuffisante de var pour déclarer des variables. L'utilisation de var pour déclarer des variables permet des déclarations de variables répétées, ce qui entraîne l'écrasement des données, je l'espère. aide tout le monde.

Des exemples détaillés expliquent les inconvénients de l'utilisation de var pour déclarer des variables

【Recommandations associées : tutoriel vidéo javascript, front-end web

Problèmes lors de la déclaration des variables

  • Utilisez var pour déclarer des variables (permettant des déclarations de variables répétées : provoquant l'écrasement des données)

Promotion des variables

  • Accès aux données étranges
  • Problème de fermeture

  • Les variables de la fonction seront promues au sommet
  • Les variables de la portée globale seront également promues au sommet

Déclaration Var en JavaScript Le défaut des variables

  • peut être utilisé sans être déclaré (les variables déclarées avec var seront précompilées ou variables suggérées), ce qui est illogique.

  • La même variable peut être déclarée plusieurs fois, mais à proprement parler, une fois qu'une variable est déclarée une fois, elle ne peut être modifiée que ultérieurement plutôt que déclarée. Ce n'est pas logique non plus.

  • Les paramètres de boucle dans une boucle for peuvent être utilisés en dehors de la boucle (la boucle for est polluée) au-delà du rôle d'origine de la boucle de contrôle principale. Pas logique.

  • Aucune portée au niveau du bloc.

Prenons un exemple

//首先判断生成一个随机数当随机数小于0.5时声明a赋值为‘abc’
//然后输出a

if (Math.random() < 0.5){
	var a = 'abc';
	console.log(a);
}
//如果不是那么输出a
else {
	console.log(a)
}

console.log(a);

Il y a un problème très sérieux ici. Lisons-le :

Jugez d'abord et générez un nombre aléatoire Lorsque le nombre aléatoire est inférieur à 0,5, déclarez un. et affiche a

Ensuite, si a

n'est pas inférieur à 0,5, il affiche également a

Alors ce a n'existe pas en fait. En raison du problème de promotion des variables, la portée globale a un a. , la portée globale est affectée par la promotion de la variable. La portée est polluée.

Normalement, cela ne semble poser aucun problème, mais si vous mettez cette chaîne de code dans une autre langue et écrivez un code similaire, une erreur sera certainement signalée. En même temps, à cause de ce problème, cela rendra les choses difficiles. dans une certaine mesure pour les grandes applications.

Regardons à nouveau le problème de fermeture :

//选中div
var div = document.getElementByTd('div');
//我这里创建10个按钮并添加进代码里

for (var i = 1; 1 < 10; i ++){
	var btn = document.createElement('button');
	btn.innerHTML = '按钮' + i;
	div.appendChild(btn);
	//添加点击事件点击按钮时输出对应的i
	btn.onclick = function () {
		console.log(i);
	}
}
//但是当点击输出时所有的按钮都为11
//原因是当在for声明变量i时遇到了变量提升就导致了来来回回更改的就只有这一个i
//而当我们点击时for早已循环完所以循环完成时i = 11;就输出也是11了
//
//一般我们的解决办法是将点击事件上写一个立即执行函数执行完删除方可正常运行

Les variables globales sont montées sur des objets globaux : problèmes de pollution des membres d'objets globaux

var abc = "123"
console.log(abc);
//可以正常输出对吧,这就导致了一个问题
//我可以将abc挂载到window上如果说我要写很多的代码那就会导致全局变量污染

//然后我给console赋值
var console = "abc";
console.log(console);
//然后再输出console会报错
//因为我对window的console进行了覆盖所以会报错

Ce sont les divers problèmes et inconvénients rencontrés par le JS Place d'origine 【 Recommandations associées : tutoriel vidéo javascript,

front-end web🎜】🎜

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!

Déclaration:
Cet article est reproduit dans:. en cas de violation, veuillez contacter admin@php.cn Supprimer