`

JS不支持重载

    博客分类:
  • JS
阅读更多
也许你尝试过这样写JS代码:
function sayHello(name, message){
  alert("Hello! " + name + message);
}

function sayHello(name){
  alert("Hello! " + name);
}

sayHello("Peter", "Nice to see you.");

可惜你永远也不会得到你想要的结果,这段代码只会返回"Hello! Peter",因为它只会执行第二个function.

测试一下,用函数的length属性可以知道函数需要几个参数:
alert(sayHello.length); // 1
证明调用的是function sayHello(name).

也可以直接把函数名引用的函数显示出来:
alert(sayHello);
你会看到显示的是第二个函数.

你可以这样写:
function sayHello(){
  if(arguments.length == 1){
    alert("Hello! " + arguments[0]);
  }
  if(arguments.length == 2){
    alert("Hello! " + arguments[0] + arguments[1]);
  }
}

sayHello("Peter"); // "Hello! Peter",
sayHello("Peter", ", Nice to see you."); // "Hello! Peter, Nice to see you."
arguments是参数数组对象,它存储了传给函数的参数.

原因是function函数只不过是一种引用类型,当你第二次使用函数名定义函数时会把第一次定义的函数覆盖掉.
var handle = function(){
  alert("Understand?");
}

handle(); // "Understand?"

既然函数只是引用类型,那么就可以把它作为参数传给其他函数
var handle = function(){
  alert("GoodBye!");
}

function say(fun){
  fun();
}

say(handle); // "GoodBye!"

分享到:
评论

相关推荐

    让 JavaScript 轻松支持函数重载 (Part 2 - 实现)

    在JavaScript中,函数重载并不是语言原生支持的特性。但是,我们可以模拟这一功能,通常需要借助一些设计模式或技术手段。本文介绍了一种实现JavaScript函数重载的方法,主要依赖于一个名为Overload的静态类。 首先...

    js中方法重载如何实现?以及函数的参数问题.docx

    JavaScript 作为一种动态类型语言,与静态类型的编程语言如Java或C#不同,它不支持原生的方法重载。然而,由于其灵活性,我们可以通过一些技巧来模拟实现方法重载的效果。这里我们将详细讨论如何在JavaScript中实现...

    Python-vuejs与Django集成并支持热代码重载

    `Python-vuejs与Django集成并支持热代码重载`的主题涉及到两个关键的技术栈:Python的Django Web框架和JavaScript的Vue.js前端框架。这里我们将深入探讨这两个技术的集成以及如何实现热代码重载,从而提高开发效率。...

    ES6中Proxy与Reflect实现重载(overload)的方法

    从语法角度讲JavaScript不支持重载。原因很简单,JS中函数可以传入任意类型、任意个数的参数,通通可以通过在函数内使用this.arguments获得。这样,就无法实现同名函数参数列表不同实现不同功能。当然,在实际使用...

    JS函数重载的解决方案

    在面向对象的编程中,很多语言都支持函数重载,能根据函数传递的不同个数、类型的参数来做不同的操作,JS对它却不支持,需要我们额外做些小动作。 在JS的函数执行上下文中有一个名为arguments的有意思的变量,它以...

    让JavaScript 轻松支持函数重载 (Part 1 – 设计)

    JavaScript支持重载吗? JavaScript支持函数重载吗?可以说不支持,也可以说支持。说不支持,是因为JavaScript不能好像其它原生支持函数重载的语言一样,直接写多个同名函数,让编译器来判断某个调用对应的是哪一个...

    js图片大小重载插件

    JavaScript 图片大小重载插件,通常用于优化网页性能,特别是在响应式设计中,能够根据设备屏幕尺寸自动调整图片大小,提高页面加载速度并节省用户流量。jQuery Resize Plugin 是一个由 Adeel Ejaz 创建的优秀插件,...

    详解JS函数重载

    然而,在JavaScript中,由于其动态类型和弱类型的特点,函数并不直接支持传统的函数重载概念。所有的函数参数在JavaScript中都是通过arguments对象传递的,这是一个类数组对象,它包含了传递给函数的所有参数。...

    JavaScript重载函数实例剖析_.docx

    然而,在JavaScript这种动态弱类型的语言中,并没有原生支持重载这一概念。尽管如此,开发者仍然可以通过一些技巧来实现类似的功能。本文将深入探讨如何在JavaScript中模拟重载,并提供具体的实现示例。 #### 二、...

    如何实现JS函数的重载

    javascript不能支持函数的重载,如下: 代码如下:[removed] function f(length) { alert(“高为:”+length); } function f(length,width) { alert(“高为:”+length+”,宽为:”+width); } ...

    自定义滚动条jscroll.js修改改进后可动态重载滚动条

    原始的`jscroll.js`可能并不直接支持动态重载,即在页面内容改变后更新滚动条的行为。为了实现这一功能,我们需要对其进行一定的代码修改和优化。 1. **理解`jscroll.js`工作原理**:`jscroll.js`通常通过监听滚动...

    js重载资料

    虽然JavaScript不像某些静态类型的编程语言那样原生支持函数重载,但我们可以通过一些技巧来模拟实现类似的功能。 1. 函数重载的模拟: 在JavaScript中,我们不能直接声明两个具有相同名称但参数列表不同的函数。...

    JavaScript重载函数实例剖析

    总结起来,虽然JavaScript自身不支持函数重载,但开发者可以通过上述几种方法来模拟实现类似的功能。在实际应用中,应当注意代码的可读性和可维护性,避免过度依赖这些技巧导致代码复杂度过高。同时,良好的注释和...

    让JavaScript 轻松支持函数重载 (Part 1 - 设计)

    JavaScript支持函数重载吗?可以说不支持,也可以说支持。说不支持,是因为JavaScript不能好像其它原生支持函数重载的语言一样,直接写多个同名函数,让编译器来判断某个调用对应的是哪一个重载。

    JS-Function-Overloading:JS函数重载

    2. 参数类型检测:尽管JavaScript不支持编译时的类型检查,但可以在函数内部进行类型检测,以确定执行哪种逻辑。例如: ```javascript function add(a, b) { if (typeof a === 'number' && typeof b === 'number')...

    Javascript实现运算符重载详解

    JavaScript中的运算符重载是一种模拟C++或C#等语言中运算符重载的方法,由于JavaScript本身不支持运算符重载,因此需要通过特定的技巧来实现。在本例中,作者采用了一种称为“代码解释”的技术,即通过编写一个函数...

    js中方法重载如何实现?以及函数的参数问题

    然而,与C++或Java等语言不同,JavaScript并不直接支持方法重载。这是因为JavaScript函数的参数是动态类型的,也就是说,无论你传递多少个参数,或者参数类型是什么,函数都能接收。这就是JavaScript的弱类型特性。...

    JS模拟实现方法重载示例

    在JavaScript中,由于其设计特点,不像Java或C#这类语言支持传统意义上的方法重载。在传统方法重载中,我们可以定义多个同名函数,但这些函数的参数类型或参数个数不同。而在JavaScript中,如果我们试图定义两个同名...

    将SVG文件转换为VueSFC支持热重载和SVGO

    3. **热重载支持**:Vue.js的开发服务器,如`vue-cli-service`,默认支持热模块替换(Hot Module Replacement,简称HMR)。这意味着当你修改Vue组件时,浏览器会自动更新,而无需刷新整个页面。因此,在开发过程中,...

Global site tag (gtag.js) - Google Analytics