5

Chrome では、次の

console.log(true, '\t');

印刷します

true "  "

なぜ引用符がぶら下がっているのですか?

( のみが印刷されるのと同じように、console.log(true + '', '\t')のみが印刷されることに注意してください。)trueconsole.log('a', '\t');a

4

2 に答える 2

11

基本的に、console.log には 2 つのオーバーロードがあります。

console.log(formatString, args)console.log(arg1, arg2, ...)

より具体的には、ソースコードごとに、最初のパラメーターが文字列の場合、それを他のパラメーターのフォーマット文字列として扱います。それ以外の場合は、各パラメーターが直接出力されます。

したがってconsole.log(true + '', '\t')、最初のパラメーターが文字列であり、のプレースホルダーがないため、「true」が出力されます。 は文字列ではないため\tconsole.log(true, '\t')両方のパラメーターが出力されtrueます。

于 2012-08-27T18:36:22.520 に答える
2

私はそれで遊ぶことにしました

console.log(true, '\t');
true "  "

それから私は反対を試しました

console.log(false, '\t');
false " " 

理由はわかりませんが、falseは1つのスペースのみを返し、trueは2つのo_Oを返します...また\t、最初にある場合は問題はありません

console.log('\t', true);
     true

また、その後に何が起こるかは問題ではありませんが、最初のパラメーターが一般にブール値である場合、引用符を付けた後のすべてのエスケープされたタブに影響を与えるようです。

console.log(false, '\t', '\t');
false " " " "

したがって、最初のパラメータがブール値であることに間違いなく関係があります。文字列で試してみると、完全に正常に動作するからです。私はそれがグーグルクロームで奇妙なことだと思いますか?実際に見るには、ソースコードを見つける必要があります。

于 2012-08-27T18:50:31.077 に答える