純粋な JavaScript では、MDNとGoogle JavaScript スタイル ガイドは、以下の 2 つのスニペットが同等であることを示唆しています。
// Snippet one
var myObject = {
"test":"test"
}
// Snippet two
var myObject = {
test:"test"
}
performance.now()
( MDN ) を使用して、100 万個の単純なオブジェクトを作成するのにかかる時間を測定するテスト関数を作成しました。
function test(iterations) {
var withQuotes = [];
var withoutQuotes = [];
function testQuotes() {
var objects = [];
var startTime, endTime, elapsedTimeWithQuotes, elapsedTimeWithoutQuotes;
// With quotes
startTime = window.performance.now();
for (var i = 0; i < 1000000; i++) {
objects[objects.length] = {
"test": "test"
};
}
endTime = window.performance.now();
elapsedTimeWithQuotes = endTime - startTime;
// reset
objects = undefined;
startTime = undefined;
endTime = undefined;
objects = [];
// Without quotes
startTime = window.performance.now();
for (var i = 0; i < 1000000; i++) {
objects[objects.length] = {
test: "test"
};
}
endTime = window.performance.now();
elapsedTimeWithoutQuotes = endTime - startTime;
return {
withQuotes: elapsedTimeWithQuotes,
withoutQuotes: elapsedTimeWithoutQuotes
};
}
for (var y = 0; y < iterations; y++) {
var result = testQuotes();
withQuotes[withQuotes.length] = result.withQuotes;
withoutQuotes[withoutQuotes.length] = result.withoutQuotes;
console.log("Iteration ", y);
console.log("With quotes: ", result.withQuotes);
console.log("Without quotes: ", result.withoutQuotes);
}
console.log("\n\n==========================\n\n");
console.log("With quotes average: ", (eval(withQuotes.join("+")) / withQuotes.length));
console.log("Without quotes average: ", (eval(withoutQuotes.join("+")) / withoutQuotes.length));
}
test(300);
私が得た結果は、引用符を使用する方が (わずかに) 高速であることを示しています。これはなぜでしょうか?
私のブラウザでは、テスト関数から次の結果が得られます (平均 300 回以上の反復)。
引用符あり: 167.6750966666926ms
引用符なし: 187.5536800000494ms
もちろん、私のテスト関数もダフである可能性は十分にあります...
私のブラウザ: Chrome 29.0.1547.65