Maison > interface Web > js tutoriel > Syntaxe de base de NodeJs et types_node.js

Syntaxe de base de NodeJs et types_node.js

WBOY
Libérer: 2016-05-16 16:14:18
original
1565 Les gens l'ont consulté

est écrit devant

Aujourd'hui, je veux vérifier les connaissances sur le type de Node. Je veux le résumer. J'ai vu un article sur Googol, mais le lien d'origine n'est plus là. Retirez cet article dans l'instantané. a des questions, s'il vous plaît contactez-moi!

Cet article concerne les bases de JS, les experts l'ignoreront automatiquement ! Je n'ai pas beaucoup écrit sur js auparavant, et je suis relativement faible dans ce domaine, j'ai donc également rencontré des problèmes lors de l'écriture de node. Je vais m'ajouter quelques connaissances ici !

Texte

Node.js est basé sur le langage de script JavaScript. Une caractéristique commune à la plupart des langages de script est la « frappe faible ».

Différent de PHP, PHP n'a pas besoin de déclarer une nouvelle variable même s'il possède une nouvelle variable, alors que JavaScript a toujours besoin de var pour la déclarer. Et cette variable couvre la signification de tous les types tels que int, string, char, etc. en C, même les fonctions.

Tout le contenu de cet article et des suivants est édité à l'aide de vim sous Linux ou Cygwin (sinon, veuillez le convertir selon votre propre méthode), puis affichez les résultats sur la ligne de commande.

Grammaire de base

Déclaration des variables

En C/C, on déclare des variables comme ceci :

```C

Copier le code Le code est le suivant :

void foo() {}
int a = 0;
char b = 'a';
flotter c = 1.0f;
void (*d)() = foo; ///< J'ai oublié si c'était écrit comme ça, mais c'est un pointeur de fonction

Et dans Node.js ça ressemble à ça :
```javascript

Copier le code Le code est le suivant :

fonction foo() {}
var a = 0;
var b = 'a';
var c = 1,0;
var d = foo;

Ainsi, quel que soit le type de variable dont il s'agit, elle est résolue avec une var dans Node.js.

Instruction de boucle

pour…je

Cette instruction de boucle est fondamentalement la même que C/C, les deux sont

```C

Copier le code Le code est le suivant :

pour(int je = 0; je < foo; je )
{
//...
>

Puisque Node.js est faiblement typé, vous n'avez besoin que de :
```javascript

Copier le code Le code est le suivant :

pour(var je = 0; je < foo; je ) {
//...
>
pour…dans

Il s'agit d'une instruction de boucle post-typée, similaire au foreach de PHP.

Par exemple, nous avons un objet JSON comme suit :

javascript

Copier le code Le code est le suivant :

var foo = {
"bonjour" : "monde",
"noeud" : "js",
"blabla" : "bar"
};

À ce stade, nous pouvons utiliser for...in pour parcourir :

javascript

Copier le code Le code est le suivant :

pour (clé var dans foo) {
console.log(key ": " foo[key]);
>

Si l'on saisit la commande suivante sur la ligne de commande :

Copier le code Le code est le suivant :

$noeud foo.js

Le contenu suivant sera affiché à l'écran :

Copier le code Le code est le suivant :

bonjour
: monde
nœud : js
blabla : bar

Conseils : comme vous pouvez le voir ci-dessus, l'instruction for...in est utilisée pour parcourir les noms de clé des objets, tableaux et objets JSON, mais ne fournit pas de traversée des valeurs de clé. Si vous souhaitez obtenir la valeur de la clé, vous ne pouvez l'obtenir que sous la forme foo[]. C'est quelque peu différent du foreach de PHP.

pendant… fais, fais…whill

Je ne vais pas expliquer cela. Ce n'est pas très différent des autres langages, c'est juste que s'il y a une déclaration de variable, vous devez utiliser var.

Opérateur

, -, *, /

C'est tout pour ces opérateurs. Ce à quoi vous devez faire attention, c'est . Il peut fonctionner à la fois sur des chaînes et sur des opérations numériques. Bien que les langages faiblement typés disent que le type est faible, les nombres peuvent parfois apparaître sous forme de chaînes, et les chaînes peuvent parfois apparaître sous forme de valeurs numériques. Cependant, lorsque cela est nécessaire, nous devons encore dire de quel type il s'agit. Nous pouvons utiliser le code suivant pour voir le résultat :

Copier le code Le code est le suivant :

var a = "1";
varb = 2;
console.log(a b);
console.log(parseInt(a) b);

Le parseInt ici est une fonction intégrée de Node.js, qui est utilisée pour analyser une chaîne dans une variable de type int.

Le résultat de l'exécution du code ci-dessus est :

Copier le code Le code est le suivant :

12
3

Remarque : le premier résultat de console.log est 12. Puisque a est une chaîne, b est également ajouté par le système en tant que chaîne. Le résultat est que les deux chaînes sont collées ensemble et deviennent 12. Le deuxième résultat de console.log est 3 car nous avons converti le premier a en type int L'ajout de deux variables de type int est la somme des valeurs. Le résultat est bien sûr 3.

==, ===, !=, !==

Une chose à expliquer ici est que lorsque la longueur de cet opérateur logique est 2 (==, !=), il détermine uniquement si les valeurs externes sont les mêmes, mais ne détermine pas le type. Comme

Copier le code Le code est le suivant :

var a = 1, b = "1";
console.log(a == b);

Le résultat obtenu est vrai. Mais si nous ajoutons un signe égal au milieu du jugement, alors ce sera un jugement strict Ce n'est que lorsque le type et la valeur sont identiques que ce sera vrai, sinon ce sera faux. C'est à dire

Copier le code Le code est le suivant :

var a = 1, b = "1";
console.log(a === b);

, le résultat renvoyé est faux, car a est de type int et b est une chaîne.

Parlons d'ailleurs des instructions conditionnelles. En fait, si ici ce n'est pas différent des autres langages, il s'agit simplement de plusieurs opérateurs logiques, de deux signes égaux et de trois signes égaux. Je n’entrerai donc pas dans trop de détails.

type de

Ici, je vais le traiter comme un opérateur plutôt que comme une fonction.

La fonction de cet opérateur est de déterminer le type d'une variable. Il renverra une chaîne, c'est-à-dire le nom du type. Vous pouvez le connaître en exécutant le code suivant :

Copier le code Le code est le suivant :

fonction foo() {}
var a = 0;
var b = 'Chut~ Egg Drop Soup dort. ';
var c = 1,0;
var d = foo;
var e = { "a" : a };
var f = [ 1, 2, 3 ];
var g = nul;
var h = indéfini ;
console.log(typeof a);
console.log(typeof b);
console.log(typeof c);
console.log(typeof d);
console.log(typeof e);
console.log(typeof f);
console.log(typeof g);
console.log(typeof h);

Le résultat de l'exécution ici sera :

Copier le code Le code est le suivant :

numéro
chaîne
numéro
fonction
objet
objet
objet
indéfini

null, non défini, NaN

En JavaScript, il existe trois valeurs spéciales, comme indiqué dans le titre. Le premier est peut-être familier à tout le monde. On le retrouve également en C/C, mais il est en majuscule. Son essence est un

.

```C

définir NULL 0

En JavaScript, ces trois valeurs ont des significations différentes.

### nul ###

null est un type spécial d'objet, ce qui signifie en gros vide. Par exemple :

var a = nul;
Tout le monde peut le comprendre, donc je ne vais pas trop l’expliquer. Mais contrairement à C/C, ce nul n’est pas égal à 0.

### non défini ###

Ce truc signifie que cette variable n'est pas déclarée. Afin de mieux distinguer null, notre exemple de code est le suivant :

```javascript

Copier le code Le code est le suivant :

var une = {
"foo" : nul
};
console.log(a["foo"]);
console.log(a["bar"]);

Dans le code ci-dessus, nous rendons la valeur de a["foo"] vide, c'est-à-dire nulle. Et il n’y a aucune déclaration de a["bar"], elle n’est même pas vide. Tout le monde aurait dû deviner le résultat :

Copier le code Le code est le suivant :

nul
indéfini

NaN

Il s'agit d'une valeur vide, un nombre spécial. Son nom complet est Not a Number. C'est un peu étrange. Vous pouvez le comprendre comme une variable de type numérique qui n'est pas sous forme numérique ou qui a une valeur incorrecte.

Se produit principalement lorsque des erreurs d'opération numérique à virgule flottante (telles que la division par 0) se produisent. Il peut même s'agir de l'utilisateur lui-même qui crée une variable égale à NaN afin de renvoyer une valeur d'erreur pour que tout le monde sache que cette opération de fonction a ça a mal tourné.

Petits abats

Les autres instructions restantes sont similaires à d'autres langages existants, tels que break, switch, continue, etc.

Type variable

Cette section parle principalement des objets JavaScript, et les autres types seront presque ignorés.

Type de base

Node.js contient presque les types de base suivants :

numéro
chaîne
booléen
tableau
Parmi eux, les trois premiers types peuvent être directement affectés, et l'affectation du tableau n'est qu'une affectation de référence. Si une valeur est modifiée dans la nouvelle variable, la valeur de l'ancienne variable changera également. :

javascript
var foo = [ 1, 2, 3 ];
var bar = foo;
barre[0] = 3;
console.log(foo);
Le résultat obtenu est :

javascript
[ 3, 2, 3 ]
En d'autres termes, si un tableau copie un nouveau tableau, il ne peut pas utiliser l'affectation directe, mais doit effectuer une "copie complète".

Il faut parler des trois méthodes de création de tableau.

Premier type :

javascript

Copier le code Le code est le suivant :

var chien = new Array();
dog[0] = "Chut~";
dog[1] = "Soupe aux œufs";
chien[2] = "Dormir";

Deuxième type :

javascript

Copier le code Le code est le suivant :

var dog = new Array( "Shh~", "Egg Drop Soup", "Sleeping" );

Le quatrième type :

javascript

Copier le code Le code est le suivant :

var chien = [
"Chut~",
"Soupe aux œufs",
"Dormir"
];

Personnellement, je préfère la troisième façon d'écrire, qui est plus concise.

Objet JSON

Ici, je sépare l'objet JSON au lieu de le classer comme objet JavaScript. Si vous pensez que je suis un peu trompeur, vous pouvez ignorer cette section directement.

Ma distinction entre les objets JSON et les objets JavaScript réside dans le fait qu'ils sont uniquement utilisés pour stocker des données, plutôt que pour instancier une classe. En fait, l’essence de JSON est la notation d’objets JavaScript.

Pour plus d'informations sur JSON, veuillez vous encyclopédie.

Déclarer un objet JSON dans Node.js est très simple :

javascript

Copier le code Le code est le suivant :

var chien = {
"pre" : "Chut~",
"sous" : {
"name" : "Soupe aux œufs",
"agir" : "dormir",
"heure" : 12
},
"suf" : [ "J'ai dit", "C'est en train de dormir", "C'est juste en train de dormir" ]
};

Il existe deux façons d'obtenir la valeur de clé d'un certain nom de clé dans l'objet JSON La première consiste à utiliser une connexion par points et la seconde consiste à utiliser des crochets :

javascript

Copier le code Le code est le suivant :

chien
.pre;
chien["pre"];

Remarque : lorsque vous utilisez le point ci-dessus, il est directement suivi de la clé en JSON. Si vous traitez la clé comme une variable, vous ne pouvez l'essayer qu'avec dog[key] : vous pouvez maintenant l'essayer vous-même, utilisez The for. ...sous forme traverse l'objet JSON ci-dessus. N'oubliez pas d'utiliser typeof meow~

Bases des classes (objets)

À proprement parler, une classe Node.js ne peut pas être considérée comme une classe. En fait, il s'agit simplement d'un ensemble de fonctions avec quelques variables membres. Son essence est en réalité une fonction.

Mais par souci de simplicité, nous l'appellerons « classe » et l'instanciation comme « objet » dans la suite et dans le futur.

Parce qu'une classe a de nombreuses caractéristiques de fonction, ou que son essence est une fonction, nous pouvons accidentellement expliquer ici les bases des fonctions.

Déclaration et instanciation des classes

Déclarer une classe, c'est très simple, ne riez pas :

javascript
fonction foo() {
//...
>
D'accord, nous avons écrit une classe foo.

Vrai ou faux ? ! réel.

Vous n'y croyez pas ? Si vous n'y croyez pas, vous pouvez taper un morceau de code et y jeter un œil :

javascript
var bar = new foo();
Qu'il s'agisse ou non d'une fonction, si elle est écrite sous cette forme (nouvelle), c'est une instanciation de cette classe.

Et ce soi-disant foo() est en fait le constructeur de la classe foo().

Variables membres

Il existe deux façons d’utiliser les variables membres.

La première consiste à utiliser this. dans le constructeur de la classe ou dans n'importe quel constructeur. Vous pouvez déclarer une variable membre à tout moment, et cela n'affecte pas son utilisation en externe. Quoi qu'il en soit, même si vous l'utilisez avant qu'elle ne soit déclarée, il y aura un indéfini pour la prendre en charge. Voici donc la première méthode :

Copier le code Le code est le suivant :

javascript
fonction foo() {
This.hello = "monde";
>

Remarque : ce n'est que lorsque ceci est ajouté qu'il s'agit d'une variable membre de la classe appelante, sinon ce n'est qu'une variable locale dans la fonction. Il faut distinguer la portée de la variable lorsqu'il n'y a pas de this.

La deuxième méthode consiste à le déclarer en dehors du constructeur ou de toute fonction membre. Le format est .prototype. :

javascript

Copier le code Le code est le suivant :

fonction foo() {
//...
>
foo.prototype.hello = "monde";

Peu importe la méthode ci-dessus qui est une déclaration de variables membres, nous pouvons voir l'effet :

javascript

Copier le code Le code est le suivant :

var bar = new foo();
console.log(bar.bonjour);

Vous pouvez même modifier cette classe comme ceci :

javascript

Copier le code Le code est le suivant :

fonction foo() {
This.hello = "monde";
>
foo.prototype.hello = "Soupe aux œufs";

Utilisez ensuite le code ci-dessus pour générer la sortie.

Réfléchissez à la raison pour laquelle la production est toujours mondiale au lieu d'une soupe aux œufs.

Constructeur

Nous avons déjà dit que foo() est en fait un constructeur. Alors évidemment on peut passer des paramètres au constructeur, on a donc le code suivant :

javascript

Copier le code Le code est le suivant :

//Code 2.1
fonction foo(bonjour) {
Si(bonjour === non défini) {
This.hello = "monde";
} autre {
This.hello = bonjour;
>
>

On voit un jugement étrange ci-dessus if(hello === undefined). A quoi sert ce jugement ? La première possibilité est que le développeur a fait tout son possible pour transmettre un élément indéfini. À l'heure actuelle, il est compréhensible qu'il soit indéfini.

Il y a une autre situation. Nous avons dit au début que JavaScript est un langage faiblement typé. En fait, il est non seulement faiblement typé, mais son passage de paramètres est également très lâche. Vous pouvez réussir plus ou moins (tant que vous pouvez vous assurer que le programme ne fait pas d'erreurs ou que la logique ne fait pas d'erreurs lorsque vous réussissez plus ou moins), en principe, tout va bien. Les paramètres transmis dans more seront automatiquement ignorés, tandis que les paramètres transmis dans less seront complétés par undefined.

Regardez le code suivant pour comprendre :

javascript

Copier le code Le code est le suivant :

// Suite du code 2.1
var bar1 = nouveau foo();
var bar2 = new foo("Soupe aux œufs");

Veuillez afficher vous-même les variables bonjour des deux barres, et vous constaterez que l'une est le monde et l'autre est la soupe aux œufs. Évidemment, lorsque notre première bar1 est déclarée, Node.js la voit automatiquement comme :

javascript

Copier le code Le code est le suivant :

var bar1 = nouveau foo(indéfini);

Il y a donc un dicton qui dit que c'est le monde.

De plus, dans ce constructeur, nous voyons que le paramètre passé est bonjour, et il y a une variable membre dans cette classe appelée this.hello. Cependant, nous avons déjà dit que la portée est différente quand il y a ceci et sans cela. Le paramètre n'agit que dans le constructeur, et celui avec ceci est une variable membre. Son utilisation les distingue immédiatement, donc cela n'a pas d'importance même s'ils portent le même nom.

Fonctions membres

Déclaration de fonction membre

La déclaration des fonctions membres est similaire à la deuxième méthode de déclaration des variables membres, c'est-à-dire .prototype. = ;

javascript

Copier le code Le code est le suivant :

// Suite du code 2.1
function setBonjour(bonjour) {
this.hello = bonjour;
>
foo.prototype.setHello = setHello;
bar1.setBonjour("Crêpes aux œufs");

Le code ci-dessus est évident. Nous avons implémenté la fonction setHello de la classe foo, qui peut modifier la valeur de foo.hello.

Mais n’est-ce pas un peu gênant d’écrire comme ça ? Je vais ensuite parler d'une fonctionnalité importante des fonctions JavaScript.

★ Fonction anonyme ★

Souvent, certaines de nos fonctions ne sont référencées ou appelées qu'à un seul endroit, il n'est donc pas intéressant et inutile pour nous de donner un nom à cette fonction, nous pouvons donc temporairement écrire cette fonction et laisser directement la personne qui y fait référence Les gens le citent, ceux qui l'appellent l'appellent. Par conséquent, le nom de la fonction peut être omis, tel que :

javascript

Copier le code Le code est le suivant :

fonction(bonjour) {
This.hello = bonjour;
>

Quant à comment faire un devis ou appeler ? Si la classe ci-dessus doit être référencée, elle s'écrirait comme ceci :

javascript

Copier le code Le code est le suivant :

foo.prototype.setHello = function(bonjour) {
This.hello = bonjour;
>

Cette façon d'écrire a le même effet que la déclaration d'une fonction membre et permet d'économiser beaucoup de code. Et en fait, fondamentalement, la déclaration des fonctions membres de la classe est déclarée de cette manière anonyme.

Quant à savoir comment appeler la fonction anonyme ? Ceci est généralement utilisé lors du passage d'une fonction qui n'est appelée que par une certaine fonction.

Par exemple, nous avons une fonction dont le prototype est :

javascript

Copier le code Le code est le suivant :

/**
* On passera en deux variables a et b,
* Après avoir calculé la valeur de a b, remettez-la à func(num)
* Aller à la sortie
​*/
fonction sumab(a, b, func) {
var c = un b;
fonction(a, b, c);
>

Par exemple, nous avons deux versions de la fonction de sortie, l'une est une sortie chinoise et l'autre est une sortie anglaise, alors si la fonction anonyme n'est pas utilisée, elle s'écrit comme ceci :

javascript

Copier le code Le code est le suivant :

fonction zh(a, b, somme) {
console.log(la valeur de a " " b " est : " somme );
>
fonction fr(a, b, somme) {
console.log(a " plus " b " est " somme );
>
sumab(1, 2, zh);
sumab(3, 4, fr);

Exécutez ce code une fois, le résultat de sortie sera :

La valeur de 1 2 est : 3
3 plus 4 font 7
Si un tel code se présente sous la forme d'une fonction anonyme, ce sera :

javascript

Copier le code Le code est le suivant :

sumab(1, 2, fonction(a, b, somme) {
​ console.log(la valeur de a " " b " est : " sum);
});
sumab(3, 4, fonction(a, b, somme) {
console.log(a " plus " b " est " somme );
});

Ce formulaire est généralement utilisé pour les fonctions de rappel. Le mécanisme de rappel est l'essence même de Node.js ou JavaScript. Il sera présenté dans les prochains chapitres.

Méthode de déclaration de fonction anonyme de déclaration de fonction membre

Bien que je l’ai évoqué dans la section précédente, parlons-en à nouveau.

Habituellement, lorsque nous déclarons des fonctions membres d'une classe, nous utilisons des fonctions anonymes pour les déclarer, car cette fonction n'est de toute façon qu'une fonction membre de cette classe et ne sera pas référencée ou appelée séparément d'autres endroits, il y a donc ce qui suit Code :

javascript

Copier le code Le code est le suivant :

// Suite du code 2.1
foo.prototype.setHello = function(bonjour) {
This.hello = bonjour;
>

De cette façon, nous faisons en sorte que la classe foo ait la fonction setHello.

2.3.4. Arbitraire des cours

C'est encore une fois un non-sens de ma part. Le soi-disant caractère arbitraire des classes signifie que vous pouvez modifier votre classe n'importe où dans JavaScript, ce qui présente certaines similitudes avec Ruby.

Par exemple, string est en fait une classe, avec des variables membres telles que length et des fonctions membres telles que indexOf et substr. Mais si nous pensons que cette chaîne est imparfaite à certains endroits et que nous souhaitons ajouter notre propre méthode, nous pouvons alors y ajouter une fonction où vous le souhaitez, telle que :

javascript

Copier le code Le code est le suivant :

String.prototype.sb = fonction() {
var newstr = "";
pour (var i = 0; i < this.length; i ) {
Si(i % 2 === 0) newstr = "s";
sinon newstr = "b";
>
Retourner la nouvelle ;
};

Le sens de cette fonction est de remplir une chaîne pour qu'elle devienne l'incarnation de qn.

Testons-le :

Copier le code Le code est le suivant :

var str = "Chut~ La soupe aux œufs dort.";
console.log(str.sb());

Vous obtiendrez ce résultat :

sbsbsbsbs
Si vous dites à votre ordinateur "Chut ~ Egg Drop Soup dort.", votre ordinateur vous traitera d'idiot quatre fois et demie. (Écrasez-le vite)

3. Ci-joint

3.1. Copie profonde

La soi-disant copie profonde signifie créer un nouveau tableau ou un nouveau objet par vous-même et copier manuellement les valeurs des variables de type de base​​dans le tableau ou l'objet source une par une, au lieu de simplement prendre la référence du tableau ou objet source. Cela implique donc un appel récursif ou quelque chose du genre.

Ce qui suit est une fonction de copie approfondie que j'ai implémentée. Vous pouvez écrire la vôtre et l'ajouter à votre propre base de connaissances Node.js.

javascript

Copier le code Le code est le suivant :

fonction cloneObject(src) {
  var dest = {};
  pour (clé var dans src) {
    if(typeof src === "object") dest[key] = cloneObject(src[key]);
    sinon dest[clé] = src[clé];
  >
  retourner destination ;
>
Étiquettes associées:
source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Recommandations populaires
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal