带多参数与%s占位符的console.log输出顺序及规则是什么?
问题解析:console.log格式化输出的规则
先看你的代码:
const foo = "hello", world = 'world'; console.log("%s,%s!", world, "hey", "javascript", foo);
控制台输出:world,hey! javascript hello
核心原因:占位符与参数的对应规则
console.log的第一个参数是格式化模板字符串,里面的%s是字符串占位符,规则如下:
- 模板里有几个
%s,就会按顺序取后面的几个参数来替换 - 多余的参数会直接以空格为分隔符,追加在格式化后的字符串末尾
你的模板"%s,%s!"里有2个%s,所以只会用前2个参数:world和"hey",替换后得到world,hey!。剩下的"javascript"和foo(值为hello)没有对应的占位符,就直接跟在后面,用空格分开,最终输出就是world,hey! javascript hello。
补充:console.log格式化的基础规则
- 占位符除了
%s(字符串),还有%d/%i(整数)、%f(浮点数)等类型 - 占位符与参数数量不匹配时:
- 占位符数量多于参数:未被匹配的占位符会原样输出(比如模板
"%s,%s!"只传1个参数,会输出xxx,%s!) - 参数数量多于占位符:多余参数直接追加,用空格分隔
- 占位符数量多于参数:未被匹配的占位符会原样输出(比如模板
内容的提问来源于stack exchange,提问作者Servesha
相关产品推荐
相关产品推荐

