util.format(format[, ...args])


  • format <string> 一个类似 printf 的格式字符串。

util.format() 方法返回一个格式化的字符串,使用第一个参数作为类似 printf 的格式字符串,该字符串可以包含零个或多个格式说明符。每个说明符会被对应参数转换后的值替换。支持的说明符有:

【The util.format() method returns a formatted string using the first argument as a printf-like format string which can contain zero or more format specifiers. Each specifier is replaced with the converted value from the corresponding argument. Supported specifiers are:】

  • %sString 将用于转换除了 BigIntObject-0 之外的所有值。BigInt 值将用 n 表示,而没有自定义 toString 函数或 Symbol.toPrimitive 函数的对象将使用 util.inspect() 进行检查,选项为 { depth: 0, colors: false, compact: 3 }
  • %dNumber 将用于转换除 BigIntSymbol 之外的所有值。
  • %iparseInt(value, 10) 用于除 BigIntSymbol 之外的所有值。
  • %fparseFloat(value) 用于除了 Symbol 之外的所有值。
  • %j:JSON。如果参数包含循环引用,则替换为字符串 '[Circular]'
  • %oObject。对象的字符串表示,使用通用的 JavaScript 对象格式。类似于 util.inspect(),选项为 { showHidden: true, showProxy: true }。这将显示包括不可枚举属性和代理在内的完整对象。
  • %OObject。对象的字符串表示形式,采用通用的 JavaScript 对象格式。类似于不带选项的 util.inspect()。这将显示完整的对象,但不包括不可枚举属性和代理。
  • %cCSS。此说明符会被忽略,并且会跳过传入的任何 CSS。
  • %%:单个百分号('%')。这不消耗任何参数。
  • 返回值:<string> 格式化后的字符串

如果说明符没有相应的参数,则不会替换它:

【If a specifier does not have a corresponding argument, it is not replaced:】

util.format('%s:%s', 'foo');
// Returns: 'foo:%s' 

如果值不属于格式字符串的一部分,并且其类型不是 string,则会使用 util.inspect() 进行格式化。

【Values that are not part of the format string are formatted using util.inspect() if their type is not string.】

如果传递给 util.format() 方法的参数比占位符的数量多,多余的参数会被连接到返回的字符串中,并用空格分隔:

【If there are more arguments passed to the util.format() method than the number of specifiers, the extra arguments are concatenated to the returned string, separated by spaces:】

util.format('%s:%s', 'foo', 'bar', 'baz');
// Returns: 'foo:bar baz' 

如果第一个参数不包含有效的格式说明符,util.format() 会返回一个字符串,该字符串是所有参数通过空格连接起来的结果:

【If the first argument does not contain a valid format specifier, util.format() returns a string that is the concatenation of all arguments separated by spaces:】

util.format(1, 2, 3);
// Returns: '1 2 3' 

如果只向 util.format() 传递一个参数,该参数将原样返回,不进行任何格式化:

【If only one argument is passed to util.format(), it is returned as it is without any formatting:】

util.format('%% %s');
// Returns: '%% %s' 

util.format() 是一个同步方法,旨在作为调试工具使用。一些输入值可能会带来显著的性能开销,从而阻塞事件循环。请谨慎使用此函数,切勿在高频率执行的代码路径中使用。