• JavaScript 函数参数


    JavaScript 函数不会对参数值进行任何检查

    函数参数

    函数是可以拥有参数的,当然也可以不拥有

    1 functionName(parameter1, parameter2, parameter3) {
    2     要执行的代码
    3 }

    函数参数(parameter)指的是在函数定义中列出的名称

    函数参数(argument)指的是传递到函数或由函数接收到的真实

    参数规则

    JavaScript 函数定义不会为参数(parameter)规定数据类型。

    JavaScript 函数不会对所传递的参数(argument)进行类型检查。

    JavaScript 函数不会检查所接受参数(argument)的数量。

    参数默认

    如果调用参数时省略了参数(少于被声明的数量),则丢失的值被设置为:undefined

    这是可以的,但是呢最好还是给参数指定默认值啦,如下例子检查如果参数没有定义,赋默认值:

    1 function myFunction(x, y) {
    2     if (y === undefined) {
    3           y = 0;
    4     } 
    5 }

    如果调用的参数太多(超过声明),比方说你函数定义的参数为两个(a,b)但是在调用这个的时候,输入了三个参数(1,2,3)比原来多了一个,这也是允许的;既然可以多输,当然也可以少输,如果只输入一个实参(1),那么a = 1,b就会没有值,是一个undefined,这个在上面也讲过了,这个再强调一下。但是只会取前面两个值,也就是a=1,b=2,而3没人要,好惨。那怎么才能操纵到3呢?可以使用arguments对象来操纵这些参数。

    arguments 对象

    JavaScript 函数有一个名为arguments对象的内置对象。

    arguments 对象包含函数调用时使用的参数数组。

    这样,就可以很简单的利用这个数组来操纵参数中实参啦。

    下面是找出参数中最大的值:

     1 x = findMax(1, 123, 500, 115, 44, 88);
     2 
     3 function findMax() {
     4     var i;
     5     var max = -Infinity;
     6     for (i = 0; i < arguments.length; i++) {
     7         if (arguments[i] > max) {
     8             max = arguments[i];
     9         }
    10     }
    11     return max;
    12 }

    至于-Infinity是啥,Infinity是JavaScript中的一个常数,其中文意思就是:无穷。如果超过了JavaScript所表示的范围,我记得好像是64位二进制数的范围,就都用其来表示,然后再加个负号在前面,很大的数就变成很小的数啦。既然arguments是数组,那么其肯定可以使用数组的属性,这里使用了数组长度的属性:length。

    再来看下,创建一个函数来计算参数的总和:

    1 x = sumAll(1, 123, 500, 115, 44, 88);
    2 
    3 function sumAll() {
    4     var i, sum = 0;
    5     for (i = 0; i < arguments.length; i++) {
    6         sum += arguments[i];
    7     }
    8     return sum;
    9 }

    参数通过值传递

    函数调用中的参数(parameter)是函数的参数(argument)。

    JavaScript 参数通过传递:函数只知道值,而不是参数的位置。

    如果函数改变了参数的值,它不会改变参数的原始值。

    参数的改变在函数之外是不可见的。

    对象是由引用传递的

    在 JavaScript 中,对象引用是值。

    正因如此,对象的行为就像它们通过引用来传递:

    如果函数改变了对象属性,它也改变了原始值。

    对象属性的改变在函数之外是可见的。

     如上内容是看了W3school总结加复制粘贴出来的,地址:https://www.w3school.com.cn/js/js_function_parameters.asp

  • 相关阅读:
    Java中String.valueOf()方法的解释
    React 16.13.1开启严格模式会触发两次render
    React开发中使用react-router-dom路由最新版本V5.1.2(三)路由嵌套子路由
    React开发中使用react-router-dom路由最新版本V5.1.2(二)路由跳转及传参
    React开发中使用react-router-dom路由最新版本V5.1.2(一)基本跳转属性
    vue 开发中实现provide和inject的响应式数据监听
    VUE开发中,数据变化后,修改了绑定对象的属性值后,页面dom没有发生变化,两种方法可以重新渲染$set和$forceUpdate
    VUE开发中.sync 修饰符的作用
    VUE开发中.native 修饰符的作用
    git报错:CONFLICT (modify/delete) ,git冲突,解决项目开发中改了相同文件同一行
  • 原文地址:https://www.cnblogs.com/ljfsmile0613/p/13183215.html
一二三 - 开发者的网上家园