web-dev-qa-db-fra.com

Javascript:% s ou% d représente une chaîne?

Quelqu'un peut-il s'il vous plaît expliquer ce qui se passe ici? Je vois %d et %s mais je ne les vois ni déclarés ni écrits ailleurs dans le code. Qu'est-ce que ça veut dire/faire en javascript? Je suppose que c'est une sorte de modèle de chaîne que je n'ai jamais vu auparavant?

passport.deserializeUser(
  (id, done) => {
    debug('will deserialize user.id=%d', id)
    User.findById(id)
      .then(user => {
        debug('deserialize did ok user.id=%d', user.id)
        done(null, user)
      })
      .catch(err => {
        debug('deserialize did fail err=%s', err)
        done(err)
      })
  }
)

13
Turnipdabeets

Ce que vous voyez ici, ce sont les modèles de substitution de chaîne qui sont intégrés dans console.log() ou console.debug()

Le modèle va comme je l'ai présenté ci-dessous:

% s pour une valeur de chaîne

% d ou% i pour une valeur entière

% f pour un nombre à virgule flottante

% o pour un hyperlien d'objet

Donc, essentiellement, vous remplacez les valeurs par les valeurs fournies comme suit:

var name = 'Chris';
console.log('Hi, my name is %s.', name);
//Output: Hi, my name is Chris.

console.debug('Hi, my name is %s.', name);
//Output: Hi, my name is Chris.
24
Chris Cruz

console.log() et console.debug() utilisent un formatage de style printf. Vous trouverez ci-dessous les formateurs officiellement pris en charge:

Représentation du formateur:

  • %O Joliment imprimer un objet sur plusieurs lignes.
  • %o Joli-imprimer un objet tout sur une seule ligne.
  • %s Chaîne.
  • %d Nombre (entier et float).
  • %j JSON. Remplacé par la chaîne '[Circulaire]' si l'argument contient des références circulaires.
  • %% Seul signe de pourcentage ('%'). Cela ne consomme pas d'argument.

Les résultats sont écrits dans la console de débogage. Ouvrez simplement votre ligne de commande ou votre terminal et exécutez-le en utilisant ceci:

node debug [script.js | -e "script" | <Host>:<port>] command
3
Teocci

C'est probablement quelque chose de spécifique à debug (), car il n'y a pas de formatage de chaîne intégré en Javascript (pas sans bibliothèque).

Cependant,% d est remplacé par un entier et le% s par une chaîne. Exemple:

debug("I'm %s and I'm %d years old", "John", 10)

Devrait imprimer: je suis John et j'ai 10 ans.

Voici une bibliothèque que vous pourriez utiliser si vous êtes intéressé: http://www.diveintojavascript.com/projects/javascript-sprintf

1
Bruno Santos

pour un format simple comme %03d, lodash.padStart pourrait tout simplement faire l'affaire.

_.padStart(x, 3, '0')
0
aGuegu

Les spécificateurs de format de sortie% d% s, etc. proviennent de la norme ANSI C il arrive également dans le noeud via une bibliothèque - dans ce cas, util.format https://nodejs.org/api/util .html # util_util_format_format_args

0
Genovo