gpt4 book ai didi

javascript - 如何调用具有相同名称但相似参数的 JavaScript 函数

转载 作者:行者123 更新时间:2023-11-28 11:20:38 25 4
gpt4 key购买 nike

我有 2 个类似的 JavaScript 函数,但其​​中一个有一个硬编码变量,而另一个函数的变量要在调用时定义。抱歉,如果我所说的没有意义,但这里是代码,以便您可以更轻松地理解它:

    function calculateCircumference()
{
var radius = 3;
var circumference = Math.PI * 2 * radius;
console.log("The circumference is " + circumference);
}

function calculateArea()
{
var radius = 3;
var area = Math.PI * radius * radius;
console.log("The area is " + area);
}

function calculateCircumference(radius)
{
var circumference = Math.PI * 2*radius;
console.log("The circumference is " + circumference);
}

function calculateArea(radius)
{
var area = Math.PI * radius*radius;
console.log("The area is " + area);
}

calculateCircumference();
calculateArea();
calculateCircumference(5);
calculateArea(9);

输出:

The circumference is NaN
The area is NaN
The circumference is 31.41592653589793
The area is 254.46900494077323

我知道,如果我更改第二个 calculateCircumferencecalculateArea 的函数名称,整个代码将起作用,但我做错了什么,显示 当两个函数名称相同时输出中出现 NaN

或者这整件事根本就是错误的并且不可能?

非常感谢任何帮助,谢谢

最佳答案

您最初的问题描述了 function overloading ,但是 JavaScript 不支持它(无需破解)。相反,可以通过默认参数来解决您的问题。

ES6起,您可以直接在函数声明中设置默认参数:

function calculateCircumference(radius=3) {
var circumference = Math.PI * 2 * radius;
console.log("The circumference is " + circumference);
}

calculateCircumference();
calculateCircumference(5);

输出:

The circumference is 18.84955592153876
The circumference is 31.41592653589793

但是,对于 ES6 之前,您需要检查变量是否在函数内设置:

    function calculateCircumference(radius) {
radius = typeof radius !== 'undefined' ? radius : 3;
var circumference = Math.PI * 2 * radius;
console.log("The circumference is " + circumference);
}

calculateCircumference();
calculateCircumference(5);

输出:

The circumference is 18.84955592153876
The circumference is 31.41592653589793

关于javascript - 如何调用具有相同名称但相似参数的 JavaScript 函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53085082/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com