Valeur
Parfois, je me demande comment le moteur d'analyse JavaScript distingue la valeur d'une variable, comme le code suivant.
var x = 'javascript'; //javascript x = "hello"; // hello x = 555; //555 x = null; //null x = a; //a is not defined x = true; //true
est directement attribué aux nombres car il n'a pas de diversité, les nombres sont des nombres. Mais il est difficile de distinguer quand la valeur est en anglais, car dans un langage de programmation, l'anglais peut être une chaîne ou une autre variable référencée. Par conséquent, la façon de distinguer les variables et les chaînes est particulièrement importante. Les langages de programmation mettent souvent les chaînes entre guillemets pour distinguer les variables et les chaînes. Certains langages, comme Java, font également la distinction entre les guillemets simples et les guillemets doubles. Les guillemets simples entourent un caractère, tandis que les guillemets doubles entourent une chaîne. Mais JavaScript ne fait pas de distinction entre les caractères et les chaînes, mais les traite tous deux comme des chaînes, il n'y a donc aucune différence entre les guillemets simples et les guillemets doubles en JavaScript.
Bien que les guillemets puissent être utilisés pour distinguer les variables et les chaînes, la valeur peut également être un mot-clé. Par exemple, dans le code ci-dessus, j'ai attribué x à null, alors comment ces langages de programmation font-ils la distinction. les variables et les chaînes ? Qu’en est-il des mots-clés ?
null = 123; console.log(null); //Uncaught ReferenceError: Invalid left-hand side in assignment undefined = 456; console.log(undefined); //undefined
Ci-dessus, j'ai attribué respectivement null et undefined à une autre valeur. En conséquence, une erreur a été signalée lors de l'attribution d'une valeur à null, mais aucune erreur. a été signalé lors de l'attribution d'une valeur à undefined , mais également sans succès. Peut-être que pour null et indéfini, ce sont les valeurs. Les variables recherchent des valeurs. Lorsque nous parlons de la façon dont JavaScript distingue les variables et les mots-clés, cela pourrait éventuellement devenir la manière dont JavaScript distingue les variables et les valeurs.
Point-virgule
Dans certains plug-ins JS, vous voyez souvent une ligne de code comme celle-ci
;(function(){ ......... })();
Il y a un point-virgule au début du code, alors à quoi sert ce point-virgule ?
On sait qu'un point-virgule représente la fin d'un morceau de code, mais le problème est que JavaScript permet de ne pas écrire de point-virgule, donc un problème se pose. La fin du code n'est pas décidée par vous mais. par le programme. C'est le programme qui décide, et le programme n'est pas omnipotent. Souvent, il se contente de suivre une certaine règle. Si le code que vous écrivez n'est pas conforme à ses règles, le résultat final sera quelque peu insatisfaisant.
Voici les règles d'analyse JavaScript pour omettre les points-virgules
var a = 1 + 2 console.log(a) //3
L'analyseur JavaScript analysera le code ci-dessus en
var a = 1 + 2; console.log(a); //3
Si javascript n'ajoute pas de point-virgule après 2, il ne sera pas analysé. On peut aussi dire que s'il ne peut pas être analysé, l'analyseur javascript essaiera de le faire. Il ajoute un point-virgule et signale une erreur s'il ne peut toujours pas être analysé. Un autre exemple est le code suivant
var a = 10; var b = 5; var c = a + b (a + b).toString() // b is not a function
Il indique que b n'est pas une fonction, ce qui signifie que le code ci-dessus est susceptible d'être analysé comme suit code Le code
var a = 10; var b = 5; var c = a + b(a + b).toString();
traite () comme un appel de fonction. On peut également comprendre que l'analyseur JavaScript en recherchera autant que possible, mais il existe quelques exceptions, qui sont retrun, break et continue. Lorsque l'analyseur JavaScript analyse ces mots-clés, il ne modifiera pas le contenu après les sauts de ligne. Traitez-le comme le sien, mais ajoutez un point-virgule directement avant le saut de ligne. Jetez un œil au code suivant
function test(){ return 123; } console.log(test()); //undefined
Il ne renvoie pas 123, ni C'est-à-dire qu'il ajoute un point-virgule directement après le retour.
Avec le recul, pourquoi ces développeurs de plug-ins ajoutent-ils un point-virgule dans la première ligne de code ?
Puisqu'il s'agit d'un plug-in, il est naturellement destiné aux autres, n'est-ce pas ? Mais le problème clé est que vous ne savez pas comment le code est écrit par les personnes qui utilisent ce plug-in. Cela semble être une erreur. Son code et qu'avons-nous à faire les uns avec les autres ?
Si le code de l'utilisateur affecte notre code, alors comment l'affecte-t-il ? Par exemple, nous écrivons un morceau de code similaire au suivant
<script src="test.js"></script> <script src="zmz.js"></script>
Le premier script est écrit par l'utilisateur lui-même, et le deuxième script est introduit par un certain plug-in, alors comment le navigateur analyse-t-il ces deux scripts ? Testons-le
test.js
var a a
zmz.js
(1+2)
Si vous l'exécutez, vous constaterez qu'aucune erreur n'est signalée, ce qui signifie que le javascript l'analyseur ne le fait pas. Parce qu'il n'y a pas de point-virgule dans le fichier précédent, il ne sera pas analysé avec le code dans ce dernier fichier.
Le problème n'est pas là, mais peut-être que vous venez de lire un livre sur HTTP, wow, il s'avère que la fusion de fichiers peut réduire le nombre de requêtes, donc les deux scripts sont intégrés en un seul. Cela s'est transformé en quelque chose comme ça
var a a(1+2)
Pensez-vous que cela peut être fait sans erreurs si nous ajoutons un point-virgule au début du plug-in ? , ce genre de chose Il est impossible d'apparaître.
var a a;(1+2)
Par conséquent, ne considérez pas le point-virgule comme étant simplement utilisé pour terminer un certain morceau de code. Il peut également être utilisé pour isoler un. certain morceau de code et tracer une ligne entre les autres.
Pour plus d'articles liés aux humbles bases du javascript, des valeurs et des points-virgules, veuillez faire attention au site Web PHP chinois !