console.log('%%') 在 node 输出只有一个 %?
发布于 10 年前 作者 jiyinyiyong 4150 次浏览 最后一次编辑是 8 年前 来自 分享

感觉奇怪, 这个难道也是转义吗?

➤➤ node -v
v0.10.33
12 回复

https://github.com/iojs/io.js/blob/v1.x/lib/util.js#L17 源码是这样的

 if (x === '%%') return '%';

所以就两个%就变成一个%了

@haio 这么说是为了支持 %s 这类语法而进行的转义了… 可惜跟浏览器不一致

@jiyinyiyong 翻了下以前的文档

`%%` - single percent sign (`'%'`). This does not consume an argument.

现在文档变成了

`%` - single percent sign ('%'). This does not consume an argument.

也没解释为什么%%为什么返回%了,可能觉得不应该存在%%这样的用法吧,这种用法确实也没什么意义。。

也许是以后要支持 %d 之类的语法呢?

@xadillax %d 不是已经有了么。

@haio 偏偏 Chrome 上可以输出, 还以为是 bug 了.

确实, 我就是为了在生成 log 时产生个特殊字符才遇到这个情况的.

@xadillax util.format 这个函数说多脑残就有多脑残啊。。有时候想用点 sprintf 的功能,就只能眼睁睁看着 format 这个残废。

@haio @alsotang 反正 C 里面的 sprintf 里面输出 % 这个字符的话,要么是用 %c 然后以 % 填充,要么在占位的那个字符串中以 %% 表示。

以前在写游戏的时候踩过这个坑。

https://github.com/XadillaX/xaengine/blob/master/「PARALINES - ZERO」/xaePlayScene.cpp#L131

代码中 寻找百分号 的注释就是为了破了这个坑。

@xadillax 大哥您快来实习,都盼着您呢。

@xadillax 哈哈,至少 JS 还支持单独使用 %

@haio 所以我就猜测会不会跟这个有关 -。 -

@alsotang -. - 得等毕业不是?

回到顶部