Javascript: %s или %d представляет строку?

может кто-нибудь объяснить, что здесь происходит? Я вижу %d и %s но я не вижу этих объявленных или написанных где-либо еще в коде. Что, черт возьми, это значит/ делать в javascript? Я предполагаю, что это своего рода шаблон строки, который я никогда раньше не видел?

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)
      })
  }
)

4 ответов


то, что вы видите, - это шаблоны подстановки строк, встроенные в консоль.log() или Console.отлаживать.)(

шаблон идет так, как я представил ниже:

%s для строкового значения

%d или %i для целого значения

%f для числа с плавающей точкой

%o для гиперссылка на объект

таким образом, по существу вы заменяете значения значениями, поставляемыми следующим образом:

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.

console.log() и console.debug() используйте форматирование в стиле printf. Ниже приведены официально поддерживаемые форматтеры:

форматирования представление:

  • %O Pretty-печать объекта на нескольких строках.
  • %o Pretty-печать объекта все на одной строке.
  • %s строку.
  • %d Number (как целое число, так и float).
  • %j в формате JSON. Заменяется строкой ' [Circular]', если аргумент содержит циклические ссылки.
  • %% один знак процента ('%'). Это не требует аргумента.

результаты записываются в консоль отладки. просто откройте командную строку или терминал и запустите его, используя следующее:

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

Это, вероятно, что-то конкретное debug (), так как в Javascript нет встроенного форматирования строк (не без библиотеки).

однако %d заменяется целым числом, а %s - строкой. Пример:

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

должен напечатать: Я Джон, и мне 10 лет.

вот библиотека, которую вы можете использовать, если вам интересно:http://www.diveintojavascript.com/projects/javascript-sprintf


спецификаторы % выходного формата %d %S и т. д. поступают из ANSI C таким образом, он входит в узел через библиотеку-в этом случае util.формат https://nodejs.org/api/util.html#util_util_format_format_args