разница между «void 0» и «undefined»

Я использую "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 "

Test

Edit II: производительность, основанная на эта ссылка

Код и тест

IE 8:
typeof: 228ms
undefined: 62 мс
void 0: 57 мс

Firefox 3.6:
typeof: 10 мс
undefined: 3 мс
void 0: 3ms

Opera 11:
typeof: 67ms
undefined: 19 мс
пустота 0: 20 мс

Chrome 8:
тип: 3 мс
undefined: 5 мс
void 0: 3ms

59
задан andres descalzo 26 January 2011 в 17:22
поделиться