Я использую "Closure Compiler" , при компиляции моих сценариев я трачу следующее:
Перед компиляцией:
// ==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({});
При этом я считаю, что вопрос использования "void 0" и "undefined", есть ли разница в использовании, или эти два случая хорошо?.
Редактировать
если я определяю «var undefined», скомпилированный с «void 0», если я не определяю «undefined», скомпилированный с «undedined», тогда не зависит количество символов между «undefined» и «void 0»
Тест
Редактировать II: производительность, на основе эта ссылка
Код и тест
IE 8:
typeof: 228 мс
undefined: 62 мс
недействительно 0: 57мс
Firefox 3.6:
typeof: 10 мс
undefined: 3 мс
недействительный 0: 3 мс
Опера 11:
typeof: 67мс
undefined: 19 мс
недействительно 0: 20 мс
Chrome 8:
typeof: 3 мс
undefined: 5 мс
недействительно 0: 3 мс