关键词:arguments 重载
严格模式是为JavaScript定义了一种不同的解析与执行模型。在严格模式下,ECMAScript3中的一些不确定的行为将得到处理,而且对某些不安全的操作也会抛出错误。要在整个脚本中启用严格模式,可在顶部添加如下代码(编译指示):
‘use strict‘;
在函数内部的上方包含这条编译指示,也可以指定函数在严格模式下执行:
function doSomething(){
‘use strict‘;
//函数体
}
ECMAScript函数不介意传递进来多少个参数,也不在乎传进来的参数是什么数据类型。即便你定义的函数只接收两个参数,在调用时也可以传一个、三个甚至不传,解析器永远不会有什么怨言,因为ECMAScript中的参数在内部是用一个数组来表示的,函数接受的始终是这个数组,而不关心这个数组中包含哪些参数(如果有参数的话)。其特点之一就是:命名的参数只提供便利,但不是必需的。
实际上,在函数体内可通过arguments对象来访问这个数组。它与数组类似(但不是Array的实例),因为可以使用方括号语法访问每一个元素,使用length属性来确定参数数量。且它的值永远与对应命名参数的值保持同步。没有传递值的命名参数将自动被赋予undefined值
function doAdd(num1,num2){
arguments[1] = 10; //num2同步修改
alert(arguments[0] + num2);
}
如下代码后定义的函数会覆盖先定义的函数。详细理解可见第四章Function部分
function addSomeNumber(num){
return num + 100;
}
function addSomeNumber(num1,num2){
return num1 + num2;
}
如果要模仿方法的重载,可检查传入函数中的参数的类型和数量并作出不同的反应。
function addSomeNumber(){
if(arguments.length === 2){
//...
}else if(arguments.length === 3){
//...
}
}
原文:https://www.cnblogs.com/L-xmin/p/12588787.html