私は「ClosureCompiler」を使用しています。スクリプトをコンパイルするとき、次のように費やします。
コンパイルする前に:
// ==ClosureCompiler==
// @compilation_level SIMPLE_OPTIMIZATIONS
// @output_file_name default.js
// @formatting pretty_print,print_input_delimiter
// ==/ClosureCompiler==
var myObj1 = (function() {
var undefined; //<----- declare undefined
this.test = function(value, arg1) {
var exp = 0;
arg1 = arg1 == undefined ? true : arg1; //<----- use declare undefined
exp = (arg1) ? value * 5 : value * 10;
return exp;
};
return this;
}).call({});
var myObj2 = (function() {
this.test = function(value, arg1) {
var exp = 0;
arg1 = arg1 == undefined ? true : arg1; //<----- without declare undefined
exp = (arg1) ? value * 5 : value * 10;
return exp;
};
return this;
}).call({});
編集済み:
// Input 0
var myObj1 = function() {
this.test = function(b, a) {
a = a == void 0 ? true : a; //<-----
var c = 0;
return c = a ? b * 5 : b * 10
};
return this
}.call({}), myObj2 = function() {
this.test = function(b, a) {
a = a == undefined ? true : a; //<-----
var c = 0;
return c = a ? b * 5 : b * 10
};
return this
}.call({});
これで「void0」と「undefined」の使い方の質問は、使い方に違いはあるのでしょうか、それとも2つのケースでいいのでしょうか。
編集
「void0」でコンパイルされた「varundefined」を定義した場合、「undedined。」でコンパイルされた「undefined」を定義しなかった場合、「undefined」と「void0」の間の文字数の問題ではありません。
編集II:このリンクに基づくパフォーマンス
IE 8:
typeof:228ms
未定義:62ms
void 0:57ms
Firefox 3.6:
typeof:10ms
undefined:3ms
void 0:3ms
Opera 11:
typeof:67ms
undefined:19ms
void 0:20ms
Chrome 8:
typeof:3ms
undefined:5ms
void 0:3ms