Я использую "Closure Compiler" при составлении своих сценариев я провожу следующее:разницы между "пустотой 0" и "неопределенной"
Перед компиляции:
// ==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», есть ли какая-то разница в использовании или два случая хорошо ?.
Редактировать
если я определяю «вар неопределенного» скомпилированный с «недействительными 0», если я не определил «неопределенный» скомпилирован с «undedined.», То не вопрос количества символов между «неопределенным "и "пустота 0"
Edit II: производительность, основанная на this link
IE 8:
TypeOf: 228ms
неопределенными: 62ms
недействительными 0: 57ms
Firefox 3.6:
TypeOf: 10ms
неопределенными: 3ms
недействительными 0: 3ms
опера 11:
TypeOf: 67ms
неопределенный: 19ms
недействительные 0: 20ms
хром 8:
TypeOf: 3ms
неопределенный: 5ms
недействительных 0: 3ms
да, я прочитал документацию, но в примере, который я дал, «закрытие google» в случае с использованием «void 0» и еще один «undefined» –
@andres: hmmm, я вижу, что вы говорите. Это странно ... –
@andres: см. Мое редактирование. –