美文网首页让前端飞
JavaScript:函数参数

JavaScript:函数参数

作者: 前小小 | 来源:发表于2021-04-20 22:15 被阅读0次

    参数概念

    函数运行的时候,有时需要提供外部数据,不同的外部数据会得到不同的结果,这种外部数据就叫参数。

    参数可以分为:

    • 形参:在定义函数时,声明的参数变量仅在函数内部可见。
    • 实参:在调用函数时,实际传入的值。

    示例
    定义 JavaScript 函数时,可以设置零个或多个参数。

    function f(a, b) {  //设置形参a和b
        return a + b;
    }
    
    var x = 1, y = 2;  //声明并初始化变量
    console.log(f(x,y));  //调用函数并传递实参
    

    在上面示例中,a、b 就是形参,而在调用函数时向函数传递的变量 x、y 就是实参。

    参数规则

    • 函数定义时形式参数没有指定数据类型。
    • 函数对实际参数没有进行类型检测。
    • 函数对实际参数的个数没有进行检测。

    默认参数

    如果函数在调用时未提供实际参数,参数会默认设置为: undefined

    <script>
    function myFunction(x, y) {
        y = y || 0;
        return x * y;
    }
    document.getElementById("demo").innerHTML = myFunction(4);
    </script>
    
    • 如果y已经定义 , y || 返回 y, 因为 y 是 true, 否则返回 0, 因为 undefined 为 false。

    参数传递

    javascript 中所有函数的参数都是按值传递的。也就是说,把函数外部的值复制到函数内部的参数,就和把值从一个变量复制到另一个变量一样。

    • 基本类型值
      在向参数传递基本类型的值时,被传递的值会被复制给一个局部变量(命名参数或arguments对象的一个元素)
    function addTen(num){
    num += 10;
    return num;
    }
    var count = 20;
    var result = addTen(count);
    console.log(count);//20,没有变化
    console.log(result);//30
    
    • 引用类型值
      在向参数传递引用类型的值时,会把这个值在内存中的地址复制给一个局部变量,因此这个局部变量的变化会反映在函数的外部
    function setName(obj){
    obj.name = 'test';
    }
    var person = new Object();
    setName(person);
    console.log(person.name);//'test'
    

    当在函数内部重写引用类型的形参时,这个变量引用的就是一个局部对象了。而这个局部对象会在函数执行完毕后立即被销毁

    function setName(obj){
    obj.name = 'test';
    console.log(person.name);//'test'
    obj = new Object();
    obj.name = 'white';
    console.log(person.name);//'test'
    }
    var person = new Object();
    setName(person);
    

    相关文章

      网友评论

        本文标题:JavaScript:函数参数

        本文链接:https://www.haomeiwen.com/subject/eqsplltx.html