Javascript字符串化';%%';丢失百分号
为什么stringify的输出缺少百分号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-数字(整数和浮点)。
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,现在还可以根据需要获得%%。