至少在Chrome中,如果我遇到以下两个语句,我会根据参数的上下文得到不同的输出。
console.log(1,"1") → 1 "1"
console.log("test","2") → test 2
这给我带来了麻烦,因为我试图找出一个变量(其值应为1)被赋予一个字符串(" 1")。当我查看控制台输出时,我无法在任何地方找到它,只是发现console.log()与打印字符串的方式不一致。
我需要做些什么才能强制console.log的输出正确反映每个参数的值和类型?
答案 0 :(得分:3)
您可以通过使用空字符串启动日志来强制处理所有参数:
console.log("", 1, "1") → 1 1
console.log("", "test", "2") → test 2
有趣的是,nodejs具有相同的日志记录行为,因此它必须是标准的。 console.log()
的第一个参数支持不同的格式字符串,因此可能是一个奇怪的结果。
答案 1 :(得分:1)
我建议您使用typeof
来获得更强大的解决方案。控制台不值得信赖!
typeof "2" == 'string' // returns true
typeof 2 == 'number' // returns true
答案 2 :(得分:1)
您始终可以构建自己的包装器功能 - 看起来console.log
不一定在浏览器中保持一致,但您可以简化它,可能类似于:
function console_log() {
var output = "";
if (arguments) {
var i;
for (i = 0; i < arguments.length; ++i) {
if (i > 0) {
output += " ";
}
if (arguments[i] && typeof arguments[i] === "string") {
output += JSON.stringify(arguments[i]);
} else {
output += arguments[i];
}
}
}
console.log(output);
}
console_log("a", 1);
console_log(1, "a");
当然,请根据您的需要进行修改。