wol*_*avi 0 javascript overloading
我有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);Run Code Online (Sandbox Code Playgroud)
输出:
The circumference is NaN
The area is NaN
The circumference is 31.41592653589793
The area is 254.46900494077323
Run Code Online (Sandbox Code Playgroud)
我明白,如果我改变第二的函数名calculateCircumference和calculateArea,整个代码会工作,但我在做什么错误是显示NaN在输出的时候两者的函数名是一样的吗?
或者这整件事情是完全错误的并且不可能?
非常感谢任何帮助,谢谢
您的初始问题描述了函数重载,但JavaScript不支持它(没有hacks).相反,什么将解决您的问题是可能的默认参数.
从ES6开始,您可以直接在函数声明中设置默认参数:
function calculateCircumference(radius=3) {
var circumference = Math.PI * 2 * radius;
console.log("The circumference is " + circumference);
}
calculateCircumference();
calculateCircumference(5);Run Code Online (Sandbox Code Playgroud)
输出:
The circumference is 18.84955592153876
The circumference is 31.41592653589793
Run Code Online (Sandbox Code Playgroud)
但是对于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);Run Code Online (Sandbox Code Playgroud)
输出:
The circumference is 18.84955592153876
The circumference is 31.41592653589793
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
230 次 |
| 最近记录: |