Вы можете передать somevar по значению (не по ссылке) с помощью функции JavaScript, известной как closure :
var someVar='origin';
func = function(v){
console.log(v);
}
document.addEventListener('click',function(someVar){
return function(){func(someVar)}
}(someVar));
someVar='changed'
Или вы можете написать обычную функцию переноса, такую как wrapEventCallback
:
function wrapEventCallback(callback){
var args = Array.prototype.slice.call(arguments, 1);
return function(e){
callback.apply(this, args)
}
}
var someVar='origin';
func = function(v){
console.log(v);
}
document.addEventListener('click',wrapEventCallback(func,someVar))
someVar='changed'
Здесь wrapEventCallback(func,var1,var2)
похоже на:
func.bind(null, var1,var2)