【问题标题】:Unexpected Results using "%" character in string ending with "\n" character在以 \"\\n\" 字符结尾的字符串中使用 \"%\" 字符的意外结果
【发布时间】:2023-01-27 23:17:33
【问题描述】:

console.log("%%%","\n");

只产生两个“%”字符和一个换行符(一个百分号被删除)

console.log("%%%"+"\n");

按预期生成所有 3 个字符....

如果我用任何其他字符替换“%”字符,两个示例都会输出 3 个字符和一个换行符……只有“%”字符才会删除其中一个字符。

https://replit.com/@JustJamie/PercentSignConfusion#index.js

我曾尝试寻找对这种现象的解释,但找不到之前提到过的任何内容。我试过用许多其他字符替换“%”字符,包括所有特殊字符,并且只使用 % 字符得到这个结果。

在输入这个问题时,我可能已经找到了答案。我相信正在发生的事情是 javascript 将 % 符号解释为占位符,然后将占位符的最后一个实例替换为传递给 console.log 的第二个参数中的换行符。任何人都可以找到解释这个的 javascript 参考吗?

【问题讨论】:

  • 这是故意的。 Chrome 提供了一种在日志消息中使用自定义样式来控制日志的方法。见developer.chrome.com/docs/devtools/console/format-style
  • 了解console.log()。它的第一个参数是格式字符串。
  • 如果你想确保你不应用 chrome 格式,那么将另一个字符串放在控制台日志的第一个参数中,如下所示:console.log('', '\%\%\%', '\n')

标签: javascript


【解决方案1】:

% 可用于console.log 中的格式化。例如,%d 可用于输出数字。

console.log('%d', 42);

%% 用于转义百分号,即单独输出一个百分号。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-08-16
    相关资源
    最近更新 更多