Javascript字符串化';%%';丢失百分号

Javascript字符串化';%%';丢失百分号,javascript,json,stringify,Javascript,Json,Stringify,为什么stringify的输出缺少百分号 var a = ["dp",'%%']; var t = JSON.stringify (a); console.log ('t: ' + t); 结果是: t: ["dp","%"] 为什么结果不是: t: ["dp","%%"] 谢谢 如in Node.js的文档中所述,该函数采用以下格式的参数: 第一个参数是包含零个或多个占位符的字符串。 每个占位符都将替换为其相应参数的转换值。支持的占位符包括: %s-字符串。 %d-数字(整数和浮点)。

为什么stringify的输出缺少百分号

var a = ["dp",'%%'];
var t = JSON.stringify (a);
console.log ('t: ' + t);
结果是:

t: ["dp","%"]
为什么结果不是:

t: ["dp","%%"]

谢谢

如in Node.js的文档中所述,该函数采用以下格式的参数:

第一个参数是包含零个或多个占位符的字符串。
每个占位符都将替换为其相应参数的转换值。支持的占位符包括:

%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
,只会打印没有上述替换的纯字符串。

这与
JSON.stringify
无关。我只需执行
console.log('%')
,就可以用
node 0.10.36
重现单个
%
输出。这可能是节点内部使用的
console.log
util.format
的问题


但是,在node 4.0中,我得到了预期的结果。

我无法重现这一点,我运行了与您发布的代码完全相同的代码,得到了后一个结果。我使用node.js v0.10.36运行了它。我刚刚用JSBin运行了一下,也得到了后一个结果。谢谢你的提示。刚刚升级到节点4.2.1,现在还可以根据需要获得%%。