我的
HTML有一个按钮,它运行一个调用其他几个
JavaScript函数的函数.它看起来像这样:
<button id="ButtonSearch" onclick="FillAll()"></button>
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.
解决方法
好吧,它被调用了两次,因为你的代码中有两个调用:
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 举报,一经查实,本站将立刻删除。