繁体   English   中英

使用不同参数执行的JavaScript函数

[英]JavaScript functions executed with different arguments

我的HTML有一个按钮,它运行一个调用其他几个JavaScript函数的函数。 它看起来像这样:

<button id="ButtonSearch" onclick="FillAll()"></button>

函数FillAll()Calls.js文件中,如下所示:

function FillAll()
{
    var from_date = document.getElementById('FromDate').value;
    var to_date = document.getElementById('ToDate').value;

    FillMap();
    FillMap(from_date, to_date);
    FillRadio();
    FillArea();
}

最后,实际的函数FillMap() ,它位于Maps.js文件中,如下所示:

function FillMap(from_date, to_date)
{   
    alert(from_date);
    var from_date = document.getElementById('FromDate').value;
    var to_date = document.getElementById('ToDate').value;
    // do stuff
}

奇怪的是, FillMap()被调用两次, alert弹出两次:第一个undefined ,第二个显示from_date

一般来说,JavaScript函数是否与“常规”函数不同,其中参数的数量需要匹配?

在这种情况下,参数不匹配,但仍在调用函数。

好吧,它被调用了两次,因为你的代码中有两个调用:

FillMap();
FillMap(from_date, to_date);

对于问题的主要部分,在JavaScript中,所有参数都是可选的。 除非另有说明,否则它们默认为undefined

 function A(a, b, c) { console.log(a, b, c); } A(1, 2); 

像Java和C#这样的严格类型的语言会抛出一个编译时错误,不会让你这样做。

JavaScript并不关心,它会让你以任何方式调用它。

使用ECMAScript 6,您现在可以直接指定默认值:

 function A(a = 5) { console.log(a); } A(); 

在此之前(甚至现在编译成代码),您经常会看到这种模式:

 function A(a) { a = a || 5; console.log(a); } A(); 

这是指定默认值的便捷方式。

是的,您可以调用JavaScript函数而不将任何内容传递给它。

JavaScript在某种意义上是独一无二的,因为它总是只是试图“工作”。所以你没有在第一次调用中定义一个参数,但它隐含地传递了那个奇怪的undefined参数。 查找有关未定义基元类型的更多信息

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM