动态函数表达式在使用第一类 [duplicate] 触发时不会抛出错误

On the fly function expression doesn't throw error when triggering with first class [duplicate]

提问人:M Navneet Krishna 提问时间:12/9/2022 更新时间:12/9/2022 访问量:16

问:

我正在学习Javascript,我遇到了函数表达式和第一类函数的这些概念。

虽然我确实理解它们的定义,但我无法理解为什么我的代码会以这种方式运行。

我有一个第一类函数,它接受 2 个参数 - 函数名称和文本。在尝试学习时,我最终用 2 种不同类型的函数调用它 - 一种具有预期参数,另一种具有意外参数

我的疑问是,当有意外的参数计数时,为什么没有抛出任何错误

代码片段

// function as a first-class function
function firstClassFunction(functionName, text) {
    functionName("Hello from first-class function"+ " + " + text);
}

// function expression with on the fly function i.e. giving function on fly to first-class functions
firstClassFunction(function(text) {
    console.log(text + " + " + "Hello from function expression on fly")
}, "Additional text")


// function expression with on the fly function i.e. giving function on fly to first-class functions
firstClassFunction(function() { // Not sure of this behaviour
    console.log("Hello from function expression on fly")
}, "Additional text")

输出

Hello from first-class function + Additional text + Hello from function expression on fly
Hello from function expression on fly

我无法理解为什么输出的第 2 行在那里,为什么没有出现错误

提前致谢!

JavaScript 节点 .js 方法 第一类函数 函数表达式

评论

0赞 Bergi 12/9/2022
pointersgonewild.com/2012/02/27/......

答:

0赞 dave 12/9/2022 #1

这就是 javascript 的工作方式,它不是一种严格类型的语言。您可以将更多参数/更少参数传递给它期望的函数。你甚至可以得到你不知道会存在的论点:

function demo() {
    console.log(Array.from(arguments))
}


demo('a', 'b')

如果你想要更多的类型安全性,我建议你研究一下打字稿。