也许你尝试过这样写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!"
分享到:
相关推荐
它同样具有特定的用途和意义,因此不能被重载。 3. **作用域解析运算符 `::`**: - `::`运算符用于解析作用域,即指明某个标识符是在全局作用域还是局部作用域中定义的。这是一个重要的语言特征,用于解决命名冲突...
JavaScript(JS)重载是编程中的一个概念,它通常指的是在同一个函数名下定义多个具有不同参数列表的函数,使得根据传入的参数数量或类型,可以调用不同的实现。在许多面向对象的语言中,如Java或C++,函数重载是一...
ajax不支持方法重载,不能有两个add(int n) add(string n)
### 运算符重载和函数重载 #### 概述 在面向对象编程中,重载是一种重要的机制,它允许我们为同一个名称定义多个不同的实现。这不仅可以提高代码的可读性和简洁性,还可以更好地封装行为。在C++中,重载主要分为两...
2. 不能改变运算符的优先级和结合性。 3. 不能创建新的关键字或运算符。 4. 重载赋值运算符(`=`)时,通常需要考虑深拷贝和浅拷贝的问题,以防止意外的副作用,也称为“复制语义”。 5. 对于复合赋值运算符(如`+=`...
前两个运算符不能重载是为了保证访问成员的功能不能被改变,域运算符和sizeof 运算符的运算对象是类型而不是变量或一般表达式,不具备重载的特征。 C++运算符重载的规则 C++对运算符重载定义了如下几条规则。 1) C++...
运算符重载.py python运算符重载
在C++编程语言中,重载(Overload)是一种重要的特性,它允许程序员使用相同的函数名或运算符但带有不同的参数列表。通过这种方式,我们可以在不同的上下文中为一个标识符赋予不同的含义,使得代码更加清晰且易于...
这种方式更易于阅读,但不够灵活,因为函数名一旦确定就不能改变。 ### 参数问题 在JavaScript中,函数参数是可选的,如果没有提供足够的参数,剩余的参数默认为 `undefined`。因此,如果你需要确保某些参数是必需...
JavaScript 图片大小重载插件,通常用于优化网页性能,特别是在响应式设计中,能够根据设备屏幕尺寸自动调整图片大小,提高页面加载速度并节省用户流量。jQuery Resize Plugin 是一个由 Adeel Ejaz 创建的优秀插件,...
在JS方法中,不能像C#方法能实现重载,但是我们可以通过js中的arguments来实现js方法的重载。 下面给出html实例: <html> <head> <title>JS方法的重载</title> [removed] function testFun...
您可能感兴趣的文章:详解C++编程中的单目运算符重载与双目运算符重载C++运算符重载规则详解简介C++编程中的运算符重载c++ *运算符重载C++重载运算符的规则详解解析C++中不能重载为友元函数的四个运算符C++运算符...
- 不能重载的运算符包括点"."、指针到成员"->*"、域解析":"和条件运算符"?:"。 - 重载运算符不会改变其原有的优先级和结合性,这意味着重载后的运算符仍然遵循原始运算符的语法规则。 - "="赋值运算符不能作为友元...
2. 不能重载一些特殊运算符,如`.`、`.*`、`->`、`::`、`?:`、`sizeof`、`typeid`。 3. 不能改变运算符的参数个数、优先级或结合性。 4. 重载运算符不能使用默认参数。 运算符重载的语法通常形式为`返回类型 ...
: , sizeof , typeid 这几个运算符不能被重载,其他运算符都能被重载。 ### 重载不能改变该运算符用于内置类型时的函义 程序员不能改变运算符+用于两个int型时的含义。 ### 运算符函数的参数至少有一个必须是类...
### 实验六:函数重载与运算符重载 #### 实验目的 1. **掌握函数重载的方法**:理解并能够实现同一名称但参数不同的多个函数,以便根据不同的参数类型或数量调用相应的函数体。 2. **掌握运算符重载的方法**:学会...
JavaScript是一种支持面向对象编程的语言,然而它的早期版本并不支持...此外,随着ECMAScript 6(ES6)的引入,JavaScript开始支持默认参数,这在某种程度上可以减轻上述模拟重载的需求,但仍然不能完全替代函数重载。
比如,不应随意改变运算符的优先级或关联性,也不应重载运算符来执行与其常规含义不符的操作。 在学习C++的运算符重载过程中,通过100个不同的实例,我们可以全面理解各种运算符的重载方式、适用场景以及潜在的陷阱...
通过这些技术,虽然JavaScript不直接支持传统意义上的函数重载,但我们能够实现类似的效果。需要注意的是,arguments对象的使用也存在争议,比如在严格模式下一些行为会有所不同,且ECMAScript 6引入的剩余参数...