如何强制console.log始终在字符串周围打印引号

时间:2015-04-16 21:51:56

标签: javascript google-chrome

至少在Chrome中,如果我遇到以下两个语句,我会根据参数的上下文得到不同的输出。

console.log(1,"1") → 1 "1"
console.log("test","2") → test 2

这给我带来了麻烦,因为我试图找出一个变量(其值应为1)被赋予一个字符串(" 1")。当我查看控制台输出时,我无法在任何地方找到它,只是发现console.log()与打印字符串的方式不一致。

我需要做些什么才能强制console.log的输出正确反映每个参数的值和类型?

3 个答案:

答案 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");

当然,请根据您的需要进行修改。