Tôi đang sử dụng "Closure Compiler", khi biên soạn kịch bản của tôi, tôi dành những điều sau đây:sự khác biệt giữa "void 0" và "không xác định"
Trước khi soạn thảo:
// ==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({});
Biên soạn:
// 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({});
Với điều này tôi tin rằng câu hỏi của việc sử dụng "void 0" và "không xác định", là có bất kỳ sự khác biệt trong việc sử dụng hoặc hai trường hợp là tốt ?.
Sửa
nếu tôi xác định "var không xác định" được biên soạn với "void 0", nếu tôi không xác định "không xác định" được biên soạn với "undedined.", Sau đó không phải là một vấn đề của số ký tự giữa "không xác định "và "void 0"
Sửa II: hiệu suất, dựa trên this link
IE 8:
typeof: 228ms
không xác định: 62ms
void 0: 57ms
Firefox 3.6:
typeof: 10ms
không xác định: 3ms
trống 0: 3ms
Opera 11:
typeof: 67ms
không xác định: 19ms
void 0: 20ms
Chrome 8:
typeof: 3ms
không xác định: 5ms
void 0: 3ms
có, tôi đọc tài liệu, nhưng trong ví dụ tôi đã đưa ra, "google closure" trong trường hợp sử dụng "void 0" và một "undefined" –
@andres: hmmm, tôi thấy những gì bạn đang nói. Thật lạ lùng ... –
@andres: xem chỉnh sửa của tôi. –