为什么stringify的输出缺少百分号?
var a = ["dp",'%%'];
var t = JSON.stringify (a);
console.log ('t: ' + t);
结果是:
t: ["dp","%"]
为什么不是结果:
t: ["dp","%%"]
谢谢!
答案 0 :(得分:2)
如Node.js中console.log
的文档中所述,该函数接受printf-like way中的参数:
第一个参数是一个包含零个或多个占位符的字符串 每个占位符都替换为其相应参数的转换值。支持的占位符是:
%s - 字符串。
%d - 数字(整数和浮点数) %j - JSON。替换为字符串' [Circular]'如果参数包含循环引用。
%% - 单个百分号('%')。这不会消耗论据 如果占位符没有相应的参数,则不会替换占位符。
因此,在Node.js (非浏览器)中使用%%
打印的字符串中出现console.log
的任何内容都将被单个%
替换。任何%s
,%d
或%j
将分别替换为字符串,数字或JSON字符串。以下是一些例子:
console.log("This is a string: %s", "Hello, World!");
//= This is a string: Hello, World!
console.log("This is a number: %d", 3.14);
//= This is a number: 3.14
console.log("This is a JSON string: %j", { value: true });
//= This is a JSON string: {"value":true}
console.log("This is a single percentage sign: %%");
//= This is a single percentage sign: %
console.log("If we use %%s and %%d here we get '%s' and '%d'.", "a string", 100);
//= If we use %s and %d here we get 'a string' and '100'.
然而,在浏览器中调用console.log
将只打印没有上述替换的纯字符串。
答案 1 :(得分:2)
它与JSON.stringify
没有任何关系。我只需执行%
即可使用node 0.10.36
重现单console.log('%%')
个输出。这可能是util.format
在节点内部console.log
内部使用的问题。
https://nodejs.org/docs/latest-v0.10.x/api/util.html#util_util_format_format
然而,在node 4.0
中,我得到了预期的结果。