星空网站建设

 找回密码
 立即注册
搜索
热搜: 活动 交友 discuz
查看: 6|回复: 0

谈一谈:js argument

[复制链接]
  • TA的每日心情
    开心
    14 小时前
  • 签到天数: 57 天

    [LV.5]常住居民I

    10万

    主题

    52

    回帖

    30万

    积分

    超级版主

    Rank: 8Rank: 8

    积分
    307601
    发表于 2025-8-7 11:32:19 | 显示全部楼层 |阅读模式

    JS是一种松散类型()的语言,这意味着我们在定义函数时不需要指定参数的类型。函数参数可以是任何类型的值,包括:





    基本数据类型:如、、、、、。

    引用类型:如、、。



    这种松散的类型系统使得函数在调用时非常灵活。例如,一个函数可以接受数字、字符串,甚至是另一个函数作为参数:



    (){

    ();

    }



    (42);''

    ('H');''

    ([1,2,3]);''(数组是对象的一种)

    ({:''});''

    ((){});''

    2参数的数量

    JS函数在定义时可以接收任意数量的参数。当调用函数时,传入的参数数量可以少于、等于或多于定义时的形参数量:





    少于形参数量:未接收参的形参将默认值为。

    多于形参数量:多余的参数不会被自动接收,但可以通过对象或者更现代的来处理。



    使用对象的示例:



    (){

    =0;

    (=0;;++){

    +=[];

    }

    ;

    }



    ((1,2,3,4));输出10

    从ES6开始,JS引入了,使得处理不定参数更直观:



    (){

    ((,)=+,0);

    }



    ((1,2,3,4));输出10

    3默认参数值

    ES6引入了默认参数值的机制,为处理默认值的问题提供了一种更简洁的解决方案。在定义函数时,可以直接为某个参数设置默认值:



    (='W'){

    (`H,${}!`);

    }



    ();输出:H,W!

    ('J');输出:H,J!

    这种方式使得代码更具可读性,同时减少了在函数体内进行默认值判断和赋值的繁琐。



    4参数解构

    JS允许在函数参数中进行解构赋值,尤其适用于对象和数组。这在处理复杂数据结构或只需其中部分字段时特别有用:





    对象解构:



    UI({,,=''}){

    (`${}${}${}`);

    }



    ={:'A',:30};

    UI();输出:A30



    数组解构:



    C([,]){

    (`X{},Y{}`);

    }



    =[10,20];

    C();输出:X:10,Y:20

    5参数传递机制

    JS中的参数总是按值传递的。对于基本数据类型,这意味着传递的是值的拷贝,而对引用类型来说,虽然传递的是引用的拷贝,但引用指向的对象本身是可以被修改的。因此,当传递对象或数组时,函数内的操作能够影响到外部的变量:



    A(){

    (100);

    }



    =[1,2,3];

    A();

    ();输出:[1,2,3,100]

    然而,将传入的对象完全替换掉是法影响到外部变量的,因为只是在函数内部改变了引用的指向:



    A(){

    =[100,200,300];

    }



    =[1,2,3];

    A();

    ();输出:[1,2,3]

    6立即执行函数表达式(IIFE)

    虽然不直接与函数参数相关,但立即执行函数表达式(IIFE)常与参数搭配使用,以创建单独的作用域:



    ((){

    ();

    })('H,W!');立即执行并输出:H,W!

    这种模式在模块化JS代码时非常常见,以避免全局作用域的污染。



    总之,JS函数参数是一个灵活而强大的特性,允许开发者通过各种方式处理函数传入的数据。这种灵活性不仅体现在参数的类型和数量上,还包括了如何在参数中应用解构、默认值和其传递机制等方面。通过深入理解这些概念,开发者能够编写出更灵活、可维护和高效的代码。
    回复

    使用道具 举报

    您需要登录后才可以回帖 登录 | 立即注册

    本版积分规则

    快速回复 返回顶部 返回列表