var singleton = function(fn) {    
var result;    
return function() {   
return result || (result = fn.apply(this, arguments));    
}

var createMask = singleton(function() { 
return document.body.appendChild(document.createElement('div'));  
});
createMask();
var singleton = function(fn) {    
var result;    
return function() {   
return result || (result = fn());    
}

var createMask = singleton(function() { 
return document.body.appendChild(document.createElement('div'));  
});
console.log(createMask());
区别在于:fn()和fn.apply(this, arguments);
结果都是一样..
能不能说下具体什么原因?