Javascript: получить имена фактических аргументов, переданных в функции

Можем ли мы узнать имя фактических аргументов, переданных в функции? как

func(a,b,c,d); 

когда мы это называем, я хочу, чтобы на выходе были напечатаны a, b, c, d. Что-то вроде, если я определяю func как

function func(e,f,g,h) {
// do something here so that
console.log('something');//prints a,b,c,d as output
}

EDIT: следующее не полностью соответствует цели, но если в javascript, связанном с этим вопросом, ничего не может быть сделано, то следующий может быть ответом. Смотрите, может ли кто-нибудь построить вокруг этого?

function func(){
    var args = Array.prototype.slice.call(arguments),result='';

        for(var i in this){

            if(args.indexOf( this[i])!==-1 ){
                result+=i+',';
                }

        }

    console.log(result);
    }

поэтому, если я назову,

var a=22, b=46, c=99;
func.call(this,a,b,c);//or func(a,b,c)

будет печатать a, b, c, но

в следующем случае он не будет выполнен:

var w=4,a=4, b=4, c=99;

тогда вывод будет a, b, c, w, что неверно, поскольку w не является переданным аргументом.

Смотрите, может ли кто-нибудь построить вокруг этого?

Ответ 1

Мне нужно, потому что имена также содержат некоторую информацию, которая мне нужна в моей логике функций

если я вызываю func (a, b, c, d), тогда есть один поток, если логика в func, и если я назову его func (l, m, n, d), то логический поток в функциональном алгоритме изменится и соответственно, выход тоже изменится.

Есть что-то глубоко неправильное в вашем понимании JS или вашей концепции вашей проблемы, или, скорее, и то, и другое.

Функции не могут знать и не знать и не знать, и не имеют оснований для того, чтобы знать, какие переменные, значения или выражения использовались при их вызове.

Я не знаю, решит ли это вашу проблему, что бы это ни было, но подумайте о том, чтобы сделать следующее:

func({a,b,c,d}); 

Формат {a,b,c,d} создает объект с ключами a и т.д., значениями которого являются переменная a. Это синтаксис ES6. В ES5:

func({a: a, b: b, c: c, d: d}); 

Затем в вашей функции вы можете посмотреть ключи в объекте, переданном в качестве параметра.