Много ответов здесь, но все еще неполное!
Я нашел другой случай, когда деструкторы не выполняются. Это происходит всегда, когда исключение попадает на границу библиотеки.
Подробнее см. Здесь:
Деструкторы не выполняются (без разворачивания стека), когда выбрано исключение
Конечно, просто используйте аргументы
объект.
function foo() {
for (var i = 0; i < arguments.length; i++) {
console.log(arguments[i]);
}
}
Другой вариант - пройти в свои аргументы в объекте контекста.
function load(context)
{
// do whatever with context.name, context.address, etc
}
И используйте его вроде этого
load({name:'Ken',address:'secret',unused:true})
Это имеет преимущество, которое вы можете добавить столько именованных аргументов, как вы хотите, и функция может использовать их (или нет), поскольку она видит в форме.
Да, так же, как это:
function load()
{
var var0 = arguments[0];
var var1 = arguments[1];
}
load(1,2);
Используйте аргументы
, когда внутри функции, чтобы иметь доступ ко всем аргументам.