`

JavaScript中实现函数重载和参数默认值

阅读更多

参数默认值是指在调用函数时,若省略了某个实参,函数会自动为该参数分配一个默认值,使得函数调用的方便性和灵活性大大提高。

 

举个例子,比如PHP中的字符串截取函数substr(string,start,length),当不指定length时,函数将默认截取字符串中start位置到字符串结束,而如果指定了length,则截取从start位置开始的以length为长度的字符串,所以如果调用的是substr('http://www.hualai.net.cn',11,6),则返回的是hualai;如果省略掉最后一个参数,substr('http://www.hualai.net.cn',11),则返回hualai.net.cn。

 

再比如jQuery框架中,$(selector).html()方法是获取该元素内的HTML代码,而$(selector).html(content)则是设置该元素内的HTML。我们知道,在C语言中,我们可以通过如下形式来为函数参数设置默认值:

 

void foo(int a, int b = 1, bool c = false); 

在Java中,则可以通过函数重载来设置函数参数默认值:

 

public void foo(int a){  
    foo(a, 1);  
}  
public void foo(int a, int b){  
    foo(a, b, false);  
}  
public void foo(int a, int b, bool c){  
    //函数内容  
}   

而在JavaScript中,如何像jQuery那样设置函数参数默认值呢?JavaScript中并没有像C语言中定义函数时直接在参数后面赋值的方法,也没有像Java里那样的函数重载,但我们可以通过JavaScript方法中的一个arguments只读变量数组来实现,具体如下:

 

function foo(){  
    var a = arguments[0] ? arguments[0] : 1;  
    var b = arguments[1] ? arguments[1] : false;  
    //函数内容  
}   

以上是通过判断参数是否存在,若不存在则将默认值附给变量,而我们可以通过判断参数的类型来实现重载:

 

function foo(){  
    if(typeof arguments[0] == 'string')   
        alert('参数类型为字符串');   
    else if(typeof arguments[0] == 'number')   
        alert('参数类型为数值');   
}  
 

或者:

 

function foo(){  
    if(arguments[0].constructor == String)   
        alert('参数类型为字符串');   
    else if(arguments[0].constructor == Number)   
        alert('参数类型为数值');   
}  
分享到:
评论

相关推荐

    javascript函数大全

    12. **函数重载**:虽然JavaScript不直接支持函数重载,但可以通过检查参数数量或类型实现类似功能。 以上只是JavaScript函数大全中可能涵盖的部分内容。"javascript函数大全.txt"文件可能包含了更详尽的解释、示例...

    JavaScript 基本语法 高级语法 自定义函数下载

    3. **函数重载**:虽然JavaScript不直接支持函数重载,但可以通过检查传入参数的类型或数量来模拟实现。 4. **高阶函数**:接受函数作为参数或返回函数的函数,如`map`、`filter`、`reduce`等。 5. **函数柯里化**...

    JAVASCRIPT 函数手册.rar

    JavaScript函数手册是一个全面介绍JavaScript语言中函数用法的资源集合,涵盖了从基础到高级的各种函数应用。这个RAR压缩包包含了多个HTML文件,每个文件分别详细介绍了JavaScript函数的不同部分,从字母A-C,H-L,M...

    JavaScript重载函数实例剖析

    JavaScript中的函数重载是开发者在使用强类型语言如C++或Java时经常遇到的概念,但在JavaScript这门动态类型的脚本语言中,实际上并没有内置的函数重载机制。然而,由于JavaScript的灵活性,开发者可以通过一些技巧...

    关于JS重载

    总结来说,虽然JavaScript没有内置的函数重载机制,但我们可以通过检查参数个数、类型、使用默认值、rest参数以及命名参数等多种方式来模拟重载功能,以满足不同场景的需求。理解并灵活运用这些技巧,可以使我们的...

    javascript函数中参数传递问题示例探讨

    在这些静态类型语言中,函数重载允许我们定义多个同名函数,只要它们的参数列表不同即可。而在JavaScript中,由于其动态类型和无类型语言的特性,函数重载的概念并不存在。因此,当你尝试定义两个同名函数时,后定义...

    Typescript(ts)中的函数实例代码

    本篇文章将深入探讨TS中的函数定义、可选参数、默认参数、剩余参数、函数重载以及箭头函数,这些都是编写高效、类型安全的前端应用不可或缺的知识点。 **函数定义** 在TypeScript中,我们可以使用`function`关键字...

    JS模拟实现方法重载示例

    在新的JavaScript环境中,使用函数参数默认值、rest参数(...)和解构赋值等特性,可以更加优雅和安全地处理多参数情况,而且可读性更好。 在现代JavaScript中,我们可以这样实现类似的逻辑: ```javascript ...

    ES6、正则表达式、类、函数.rar

    6. **函数重载**:虽然JavaScript没有真正意义上的重载,但可以通过默认参数和剩余参数实现类似效果。 7. **函数表达式**:包括匿名函数(如立即执行函数)、箭头函数等,提供灵活的函数定义方式。 8. **函数柯里化*...

    Javascript中arguments用法实例分析

    在JavaScript函数中,如果某个参数没有传递,它的值将是undefined。通过检查arguments对象中的相应位置的值,我们可以为缺失的参数设置默认值,如下面的代码所示: ```javascript function test(name, age) { if ...

    Kotlin 语言中调用 JavaScript 方法实例详解

    例如,如果JavaScript函数期望其参数支持`foo`和`bar`方法,则可以传递实际具有这些方法的对象。 ```kotlin external open class HTMLElement : Element { /* 成员 */ } class CustomElement : HTMLElement() { ...

    JavaScript的arguments对象应用示例

    尽管在现代JavaScript开发中,ES6引入了更灵活的参数处理方式,如rest参数和默认参数,但在学习和理解JavaScript时,了解arguments对象的使用和特点对于掌握JavaScript函数的参数传递机制仍然很有价值。 ### ...

    JavaScript面向对象

    - **方法重载**:由于JavaScript函数没有重载的概念,因此不能像Java那样根据传入参数的不同自动调用不同的方法版本。但可以通过手动检查参数来实现类似的功能。 示例代码: ```javascript function greet(name,...

    JavaScript function 的 length 属性使用介绍

    比如,在编写库或框架时,开发者可以通过length属性来检测用户是否正确调用了函数,或者在函数重载时,length属性可以用来区分不同版本的函数。此外,它也常用于JavaScript引擎的性能优化。 需要注意的是,虽然数组...

    function

    ES6中,函数参数可以设置默认值,避免因为未传递参数而导致的错误: ```javascript function greet(name = 'World') { console.log('Hello, ' + name); } ``` 剩余参数允许我们将不定数量的参数收集到一个...

    js-functions

    在"js-functions-master"这个压缩包中,你可能会发现各种实现这些概念的代码示例,这对于学习和理解JavaScript函数的使用是非常有价值的。随意使用这些文件,它们可以帮助你提升JavaScript编程技能,解决实际问题。

    与我一起学习-TypeScript:用函数做事

    4. **剩余参数和元组** TypeScript允许使用`...`运算符定义剩余参数,可以收集多个参数到一个数组中。元组允许我们表示固定数量的异构元素,这对于函数返回多种类型的数据很有用。 5. **高阶函数** 高阶函数是指...

    Java&Javascript期末考试理论试卷模版[归类].pdf

    5. 方法的重载发生在编译时,系统通过方法名、参数列表(数量、类型和顺序)来决定调用哪个方法。 6. Java中,没有子类的类称为最终类(final class)。不能被子类重载的方法是final方法。常量的默认值为0或null,...

    C# 4.0 官方语言规范 追加版 不含 C#3.0及之前内容

    动态类型可以用于变量、参数和返回值,使得代码更加灵活,但同时也牺牲了一部分编译时的类型检查。 2. **命名和可选参数**(Named and optional parameters):这个特性提高了API的易用性,允许函数参数在调用时按...

    FunctionsExercise

    ES6的默认参数和解构赋值可以一起使用,简化函数调用: ```javascript function greet({ name = 'World' }) { console.log('Hello, ' + name); } ``` 以上只是JavaScript函数相关知识的一小部分。在实际开发...

Global site tag (gtag.js) - Google Analytics