Возьмем, к примеру, этот сниппер,
функция test1 принимает объект в качестве входных данных для аргументов, но определяет имена свойств, которые должны естественно отображаться в область действия функции через ({var0, var1, var0})
(Я не уверен, что вызывать эти переменные, переменные области видимости ??)
функция test5 и test6 оба принимают объект в качестве входных данных для аргументов таким же образом, но 1 просто говорит (args)
, а другая пытаетсячтобы расширить входящие аргументы в объекте аргументов с помощью ({..args})
, что интересно, так это то, что объект аргументов в итоге выглядит одинаково в случаях test1 test5
& test6
, но переменные области видимости не совпадают.
Есть ли способ достичь этой функциональности расширяемым способом?
// functionTest.js
function test1({var0, var1, var2}={}){
console.log("*** test1 ***")
console.log("this.var0", this.var0)
console.log("arguments", arguments)
console.log("var0", var0)
console.log("var1", var1)
console.log("var2", var2)
}
function test4(arguments){
console.log("*** test4 ***")
console.log("this.var0", this.var0)
console.log("arguments", arguments)
console.log("var0", var0)
}
function test5(args){
console.log("*** test5 ***")
console.log("this.var0", this.var0)
console.log("arguments", arguments)
console.log("var0", var0)
}
function test6({...args}){
console.log("*** test6 ***")
console.log("this.var0", this.var0)
console.log("arguments", arguments)
console.log("var0", var0)
}
let testValues = ["test0", "test1", "test2"]
try {
test1({var0: testValues[0]})
} catch(error){console.error(error)}
try {
test4({var0: testValues[0]})
} catch(error){console.error(error)}
try {
test5({var0: testValues[0]})
} catch(error){console.error(error)}
try {
test6({var0: testValues[0]})
} catch(error){console.error(error)}