如何实现JS函数的重载

ECMAScript 函数不能像传统意义上那样实现重载。而在其他语言(如 Java)中,可以为一个函数编写两个定义,只要这两个定义的签名(接受的参数的类型和数量)不同即可。如前所述,ECMAScirpt函数没有签名,因为其参数是由包含零或多个值的数组来表示的。而没有函数签名,真正的重载是不可能做到的。



如果在 ECMAScript中定义了两个名字相同的函数,则该名字只属于后定义的函数。请看下面的例子:

function addSomeNumber(num){
    return num + 100;
}
function addSomeNumber(num) {
    return num + 200;
}
var result = addSomeNumber(100); //300

在此,函数 addSomeNumber()被定义了两次。第一个版本给参数加 100,而第二个版本给参数加200。由于后定义的函数覆盖了先定义的函数,因此当在最后一行代码中调用这个函数时,返回的结果就是 300。

如前所述,通过检查传入函数中参数的类型和数量并作出不同的反应,可以模仿方法的重载。

function addSomeNumber(num1) {
    var num1= arguments.length;
    if(1 == num1) {
       var num2= arguments[1];
       alert("高为:"+num1+",宽为:"+num2);
    } else {
       alert("高为:"+num1);
    }
}

个人理解浅薄,欢迎指正!

以后及时补充~



【END】

时间: 2024-10-13 12:16:46

如何实现JS函数的重载的相关文章

Js函数function基础理解

正文:我们知道,在js中,函数实际上是一个对象,每个函数都是Function类型的实例,并且都与其他引用类型一样具有属性和方法.因此,函数名实际上是指向函数对象的指针,不与某个函数绑定.在常见的两种定义方式(见下文)之外,还有一种定义的方式能更直观的体现出这个概念: var sum = new Function("num1", "num2", "return num1 + num2"); //不推荐 Function的构造函数可以接收任意数量的参

07.30《JavaScript》——JS中的函数没有重载的概念

JS中的函数没有重载的概念 js中不像是java,拥有重载的概念,所以函数名相同的函数,js会认为是同一个函数,所以会输出写在最后的一个函数的结果. function test(){ alert(arguments[0]); } function test(x){ alert(x) } function test(x,y){ alert(x+" "+y) } test(7); 结果是: 原文地址:https://www.cnblogs.com/justlive-tears/p/9393

Js函数的概念、作用、创建、调用!

一.函数是用来帮助我们封装.调用代码的最方便的工具! 二.函数的创建方法有三种: 三.函数的创建方式有3种,调用方式也不是单一的,调用方式有4种!      1.作为一个函数去调用 函数名+();(函数作为全局对象调用,会使this的值成为全局对象,使用window对象作为一个变量,容易造成程序崩溃!)       2.函数作为方法调用:(函数作为对象的方法调用,会使this的值成为对象的本身!)      我们举例说明: 3.使用构造函数调用函数:(构造函数中的this没有任何值) 4.作为函

javascript闭包如何实现函数的重载?

本文和大家分享的主要是妙用javascript闭包实现函数重载相关内容,一起来看看吧,希望对大家学习javascript有所帮助. 1.准备知识 1.1 闭包 闭包是一个函数在创建时,允许该自身函数访问并操作该自身函数以外的变量时所创建的作用域.闭包可以让函数访问所有存在于该函数声明时的作用域内的变量和函数. <script>         var outerValue = "ninja";         var later;         function oute

3.3 js函数

1.函数语法: 函数声明的方式:function 函数名(参数1,参数2-){//函数体;}函数调用:函数名(参数1,参数2-); 函数内不一定都指定返回值. 如果需要指定返回值,可用 return 跟上要返回的值来指定返回值. 位于return语句后面的代码在 return 语句所在的作用域下都不执行(如果 return 语句在一个函数体内,那么这个 return 语句所在的作用域便是这个函数体内). 如果return语句后面没有跟返回值,那么返回值为undefined.适用于不需要返回值的场

js函数动态传参

js函数体内可以通过arguments对象来接收传递进来的参数,利用这一对象属性可以动态传参. function box() { return arguments[0]+' | '+arguments[1]; //得到每次参数的值 } alert(box(1,2,3,4,5,6)); //传递参数 arguments对象的length属性可以得到参数的数量. function box() { return arguments.length; //得到6 } alert(box(1,2,3,4,5

JS 函数中的arguments,call,apply

JS 函数定义的时候的参数和调用时的关系调用时实际传递的参数可以比定义的参数多或者少,见下面的两个例子 <script> function test(a,b,c){ console.log(a); } test('a'); test('a','b','c'); </script> <script> function test(a){ console.log(a); } test('a'); test('a','b','c'); </script> JS的方法

09 js函数调用过程内存分析、js函数细节

函数的调用过程 Js函数调用过程的内存分析. 一个递归调用的例子: <html> <head> <script> //abc是一个函数它接收一个数值 function abc(num1){ if (num1>3) { abc(--num1); //递归 } document.writeln(num1); } abc(5); </script> </head> <body> </body> </html>

javascript 函数1_函数的重载

<!DOCTYPE html> <html> <head> <title>javascript函数的重载</title> <meta charset="UTF-8"> <script type="text/javascript"> /** * 此时sum所指向的空间已经从有两个参数的函数变化到只有num1的函数中 * 在调用的时候就只会调用只有num1的函数,特别指出:函数的参数和调