微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

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

我的 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()被调用两次,警报弹出两次:第一个未定义,第二个显示from_date.

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

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

解决方法

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

FillMap();
FillMap(from_date,to_date);

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

function A(a,b,c) {
    console.log(a,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();

这是指定认值的便捷方式.

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐