Arguments of Function

本文详细解释了JavaScript中函数的arguments参数是如何隐藏且自动传递的,包括如何获取传递的参数数量以及参数值。通过多个示例演示了arguments的使用方式。

There is the "arguments" parameter for each function which is hiddend and automaticly passed.

All the parameters passed through calling will all be pushed into "arguments". So we can get all passed parameters from it.

We can get the designed number of the function by calling ".length" of the function itself.

Demo0:None parameter passed

Source:

function ArgTest(a, b){
   var i, s = "The ArgTest function expected ";
   var numargs = arguments.length;     // 获取被传递参数的数值
   var expargs = ArgTest.length;       // 获取期望参数的数值
   s = "The desinged number of ArgTest Function's parameters:"+expargs;
   s += "\nThe real number of Passed parameters:"+numargs;
   for (i =0 ; i < numargs; i++){
   s += "\nArg[" + i + "]= " + arguments[i];
   }
   alert(s);
}
ArgTest();

Result:


Demo1:One parameter passed

Source:

function ArgTest(a, b){
   var i, s = "The ArgTest function expected ";
   var numargs = arguments.length;     // 获取被传递参数的数值
   var expargs = ArgTest.length;       // 获取期望参数的数值
   s = "The desinged number of ArgTest Function's parameters:"+expargs;
   s += "\nThe real number of Passed parameters:"+numargs;
   for (i =0 ; i < numargs; i++){
   s += "\nArg[" + i + "]= " + arguments[i];
   }
   alert(s);
}

ArgTest(1);
Result:


Demo2:Two parameter passed

Source:

function ArgTest(a, b){
   var i, s = "The ArgTest function expected ";
   var numargs = arguments.length;     // 获取被传递参数的数值
   var expargs = ArgTest.length;       // 获取期望参数的数值
   s = "The desinged number of ArgTest Function's parameters:"+expargs;
   s += "\nThe real number of Passed parameters:"+numargs;
   for (i =0 ; i < numargs; i++){
   s += "\nArg[" + i + "]= " + arguments[i];
   }
   alert(s);
}

ArgTest(1,2);

Result:




Demo3:Three parameters passed

Source:

function ArgTest(a, b){
   var i, s = "The ArgTest function expected ";
   var numargs = arguments.length;     // 获取被传递参数的数值
   var expargs = ArgTest.length;       // 获取期望参数的数值
   s = "The desinged number of ArgTest Function's parameters:"+expargs;
   s += "\nThe real number of Passed parameters:"+numargs;
   for (i =0 ; i < numargs; i++){
   s += "\nArg[" + i + "]= " + arguments[i];
   }
   alert(s);
}

ArgTest(1,2,3);

Result:

At the same time, we should know that "arguments" is not Array type.

We can check this by the following codes as using the inherition of properties theory :


Array.prototype.ptyProperty= 1;
function checkAgumentsType(){
    return arguments.ptyProperty;
}

s = new Array().ptyProperty;
s += "\n"+checkAgumentsType();
alert(s);


From this, we can get the point that "arguments" is not a Array instance.


在处理统计日期时,函数 `plus` 参数类型为 `UInt8` 和 `String` 不合法,通常是因为 `plus` 函数期望的参数类型不匹配。以下是一些可能的解决方案: ### 类型转换 将 `String` 类型的参数转换为日期类型,将 `UInt8` 类型转换为合适的时间间隔类型。不同的编程语言有不同的日期处理库和方法。 #### Java 示例 ```java import java.time.LocalDate; import java.time.temporal.ChronoUnit; public class DatePlusExample { public static void main(String[] args) { // 假设这是一个 UInt8 类型的值 byte daysToAdd = 5; // 假设这是一个 String 类型的日期 String dateStr = "2024-01-01"; // 将 String 转换为 LocalDate LocalDate date = LocalDate.parse(dateStr); // 使用 plus 方法添加天数 LocalDate newDate = date.plus(daysToAdd, ChronoUnit.DAYS); System.out.println("新日期: " + newDate); } } ``` #### Python 示例 ```python from datetime import datetime, timedelta # 假设这是一个 UInt8 类型的值 days_to_add = 5 # 假设这是一个 String 类型的日期 date_str = "2024-01-01" # 将 String 转换为 datetime 对象 date = datetime.strptime(date_str, "%Y-%m-%d") # 使用 timedelta 添加天数 new_date = date + timedelta(days=days_to_add) print("新日期:", new_date.strftime("%Y-%m-%d")) ``` ### 检查数据来源 确保传递给 `plus` 函数的参数类型是正确的。如果参数来自用户输入或其他数据源,需要进行严格的类型检查和转换。 ### 查看函数文档 仔细查看 `plus` 函数的文档,了解其期望的参数类型和使用方法。不同的日期处理库可能有不同的实现。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值