在JS中,如果存在同名同参的方法,它会先调用哪一个?先看两个例子:

例1:

<html>
<head>
<title></title>
<script type="text/javascript">
function btnTest() {
$f1();
$f2();
} function A() {
alert();
}
var $f1 = A;
</script>
<script type="text/javascript">
function A() {
alert();
}
var $f2 = A;
</script>
</head> <body>
<form>
<div>
<input type="button" name="Testing" onclick="btnTest();" value="TEST" />
</div>
</form>
</body>
</html>

结果会弹出:1    2

例2:

<html>
<head>
<title></title>
<script type="text/javascript">
function btnTest() {
$f1();
$f2();
} function A() {
alert(1);
}
var $f1 = A; function A() {
alert(2);
}
var $f2 = A;
</script>
</head> <body>
<form>
<div>
<input type="button" name="Testing" onclick="btnTest();" value="TEST" />
</div>
</form>
</body>
</html>

结果会弹出:2    2

这和当前的代码段有很大关系,如果在两个同名同参的JS方法同一个代码段内部,则最后加载的方法会将前一个覆盖掉,反之,如果能在当前代码段找到对应的方法,就立即调用。

在JS中,如果存在同名不同参的方法,它会先调用哪一个?再看两个例子:

例1:

<html>
<head>
<title></title>
<script type="text/javascript">
function btnTest() {
var val = document.getElementById("txtVal").value;
if (val > 10) {
A();
}
else {
A(val);
}
} function A() {
alert(1);
} function A(val) {
alert(2);
alert(val);
} </script>
</head> <body>
<form>
<div>
Input Value(INT):<input type="text" id="txtVal"/><br>
<input type="button" name="Testing" onclick="btnTest();" value="TEST" />
</div>
</form>
</body>
</html>

例2:

<html>
<head>
<title></title>
<script type="text/javascript">
function btnTest() {
var val = document.getElementById("txtVal").value;
if (val > 10) {
A();
}
else {
A(val);
}
} function A() {
alert(1);
}
</script>
<script type="text/javascript">
function A(val) {
alert(2);
alert(val);
}
</script>
</head> <body>
<form>
<div>
Input Value(INT):<input type="text" id="txtVal"/><br>
<input type="button" name="Testing" onclick="btnTest();" value="TEST" />
</div>
</form>
</body>
</html>

测试结果:同名不同参的方法会用最后加载的方法会将前一个覆盖掉!

JavaScript 同名方法的处理的更多相关文章

  1. 页面 JavaScript 存在多个同名方法的调用分析

    在 JavaScript 中,不存在方法重载的概念,方法重载指的是可以定义不同类型的参数和参数个数的同名方法,然后可以按需调用. 如需实现按参数个数的不同去执行不同的方法主体,正确的做法是通过定义一个 ...

  2. es6 javascript对象方法Object.assign()

    es6 javascript对象方法Object.assign() 2016年12月01日 16:42:34 阅读数:38583 1  基本用法 Object.assign方法用于对象的合并,将源对象 ...

  3. JavaScript - reduce方法,reduceRight方法 (Array)

    JavaScript - reduce方法 (Array) 解释:reduce() 方法接收一个函数作为累加器(accumulator),数组 中的每个值(从左到右)开始合并,最终为一个值. 语法:a ...

  4. JavaScript slice() 方法

    JavaScript slice() 方法  JavaScript Array 对象 实例 在数组中读取元素: var fruits = ["Banana", "Oran ...

  5. JavaScript toLocaleString() 方法

    JavaScript toLocaleString() 方法 JavaScript Array 对象 定义和用法 把数组转换为本地字符串. 语法 arrayObject.toLocaleString( ...

  6. 关于JavaScript lastIndexOf() 方法 w3school.com.cn写的不一定全对

    关于JavaScript lastIndexOf() 方法 w3school.com.cn的表述是 定义和用法 lastIndexOf() 方法可返回一个指定的字符串值最后出现的位置,在一个字符串中的 ...

  7. javascript一些方法兼容

    javascript一些方法兼容 标签(空格分隔): javascript 方法收集 [TOC] Object.keys 参考地址 if (!Object.keys) Object.keys = fu ...

  8. 在Swift中使用JavaScript的方法和技巧

    本文作者Nate Cook是一位独立的Web及移动应用开发者,是继Mattt大神之后NSHipster的主要维护者,也是非常知名活跃的Swift博主,并且还是支持自动生成Swift在线文档的Swift ...

  9. 把C编译成javascript的方法

    把C编译成javascript的方法,便于嵌入到HTML5中 https://github.com/kripken/emscripten

随机推荐

  1. Unity-Animator深入系列---Foot IK

    回到 Animator深入系列总目录 最近在做一个demo,遇到了角色跑动不自然的问题(注意双腿): 后来得知勾选FootIK之后Unity会智能修复这类问题: 好像这个功能还能做到斜面地形匹配,不过 ...

  2. ExecutorService线程池讲解

    ExecutorService 建立多线程的步骤: 1.定义线程类 class Handler implements Runnable{ } 2.建立ExecutorService线程池 Execut ...

  3. EF中限制字段显示长度

    在EF中有些添加的字段 文本显示超多文字,想截取显示又没有截取功能. 怎么办? 我们可以在EF中类的属性中设置 你想限制这个用户名只能有10个字符长度 public String UserName { ...

  4. UESTC 1256 昊昊爱运动 Map

    昊昊爱运动 Time Limit: 3000/1000MS (Java/Others)     Memory Limit: 65535/65535KB (Java/Others) 昊昊喜欢运动 他N天 ...

  5. 阻止js冒泡

    <!DOCTYPE html> <html> <head> <meta charset="utf-8" /> <title&g ...

  6. linux 中 ll 命令如何让查询结果按时间升序或降序排序?

    -t选项的功能是使输出的结果将以时间降序排列.如果希望按时间的升序排列,可以使用管道符将返回的结果传入tac命令.用法示例:查询当前目录的文件并以降序排列: ll -t查询当前目录的文件并以升序排列: ...

  7. C#四则运算之策略模式

    Calculator.cs using System; using System.Collections.Generic; using System.Linq; using System.Text; ...

  8. zoj 1199 几何公式推导

    链接:http://acm.zju.edu.cn/onlinejudge/showProblem.do?problemId=199 Point of Intersection Time Limit:  ...

  9. Binding的源与路径

    1.把控件作为Binding的源 例子:拖动Slider,输入框中的值也会跟着改变,或在输入框中输入数值,滑动条也会自动移动 <Window x:Class="把控件作为Binding ...

  10. Scrum Meeting---One(2015-10-20)

    一.scrum meeting 在上周六我们团队进行了一次会议,讨论了我们团队的项目以及项目分工.首先是确立我们的项目,在团队的激烈讨论下我们决定做一个校园相关的APP.然后对于这个项目我们大致进行了 ...