js a(1)(2) == a(1,2) ,arguments的使用

本文探讨了如何封装函数,使其能以a(1)(2)或a(1,2)两种形式调用并返回相同结果。通过分析,设计了一个函数a,当传入单个参数时返回一个匿名函数,当传入多个参数时直接处理所有参数。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

封装形如a(1)(2) == a(1,2) 的函数;

1.a(1)(2)

一看就是调用a函数,其后还有一个匿名函数还是要调用,这怎么解释呢?

对于匿名函数的调用其实只需要紧跟匿名函数之后就可以,无需函数名,这样以来就可以说通了:a(1)(2)在最后一次调用是是一个匿名函数,那么函数名a呢?仔细想象:如果函数a返回了匿名函数呢,这个应该是不是就成立了呢?

function a(){

    [...arguments]

    return function(){
    
    }
}

2.a(1,2)

这个函数可以很好的理解为:

function a(){
    [...arguments]
}

3.a(1)(2) == a(1,2)

这个很明显就是此两个函数必须返回相同的结果,至少字面量看起来是数值相等;换句话说,这两个函数表达式执行后均会返回一个值;

4.初步分析

function a(){
    return function(){} ;//代码执行到此结束,满足a(1)(2)的形式
    return "";//忽略上句代码执行到这里满足a(1,2)的形式
}
//分析结果是无法同时满足,那么可以同时满足的方法只有根据参数arguments分开判断;

function a(){
    var args = arguments;
    var l = arguments.length;
    var int =  arguments[0];
    if(l==1){
       return function( n ){
           return int+n 
       }
    }else{
        var s = 0; 
        [...arguments].map(function(arg){
            s+=arg;
        })
        return s
    }
}

a(1)(2) == a(1,2)  //true

JavaScript提供了不同的正则表达式用于验证输入数据的不同类型。对于给定的两个校验规则: 1. 对于非0开头的5位到13位整数[^1]: ```javascript function isQQ(value) { // 使用正则表达式测试输入是否是非0开始的5到13位数字 return /^[1-9][0-9]{4,12}$/.test(value.toString()); } // 示例: var input = "79"; if (isQQ(input)) { console.log(`${input} 是有效的QQ号码`); } else { console.log(`${input} 不是有效的QQ号码`); } ``` 2. 对于URL: ```javascript function isURL(str) { // 正则表达式匹配URL(包括协议、域名和路径) return /^(https:\/\/|http:\/\/|ftp:\/\/|rtsp:\/\/|mms:\/\/)?[a-zA-Z0-9_-]+(\.[a-zA-Z0-9_-]+)+[\/=\?%\-&_~`@[\]\':+!]*([^<>\" ])*$/.test(str); } // 示例: var urlInput = "https://example.com/path"; if (isURL(urlInput)) { console.log(`${urlInput} 是有效的URL`); } else { console.log(`${urlInput} 不是有效的URL`); } ``` 对于输入变量 `inout` 和可能的结果变量 `retval`,假设 `inout` 是一个数组,你可以这样处理: ```javascript let inout = ["79", "https://example.com", "123.45.67.89:8080", "invalid_url"]; let retval = []; for (let i = 0; i < inout.length; i++) { if (isQQ(inout[i])) { retval.push({ input: inout[i], isValid: true, type: "QQ number" }); } else { retval.push({ input: inout[i], isValid: false, type: "Invalid QQ number" }); } if (isURL(inout[i])) { retval.push({ input: inout[i], isValid: true, type: "URL" }); } else { retval.push({ input: inout[i], isValid: false, type: "Invalid URL" }); } } console.log(retval); ``` 这将返回一个包含每个输入及其验证结果的对象数组。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值