JavaScript 基础教程JavaScript 简介JavaScript 用法JavaScript 输出JavaScript 语法JavaScript 语句JavaScript 注释JavaScript 变量JavaScript 数据类型JavaScript 对象JavaScript 函数JavaScript 作用域JavaScript 事件JavaScript 字符串JavaScript 运算符JavaScript 比较和逻辑运算符JavaScript if...else 语句JavaScript switch 语句JavaScript for 循环JavaScript while 循环JavaScript break 和 continue 语句JavaScript typeof, null, undefinedJavaScript 类型转换JavaScript 正则表达式JavaScript 错误throw try catchJavaScript 调试JavaScript 变量提升JavaScript 严格模式 (use strict)JavaScript 使用误区JavaScript 表单JavaScript 表单验证JavaScript 验证 APIJavaScript 保留关键字JavaScript JSONjavascript :void(0) 含义JavaScript 代码规范JavaScript 函数定义JavaScript 函数参数JavaScript 函数调用JavaScript 闭包JavaScript HTML DOMJavaScript DOM- 改变 HTMLJavaScript DOM - 改变 CSSJavaScript HTML DOM 事件JavaScript DOM EventListenerJavaScript DOM 元素(节点)JavaScript 对象类型JavaScript Number 对象JavaScript 字符串(String)对象JavaScript Date 对象JavaScript Array 对象JavaScript Boolean 对象JavaScript Math 对象JavaScript RegExp 对象JavaScript window 对象JavaScript window.screen 对象JavaScript window.location 对象JavaScript window.history 对象JavaScript window.navigator 对象JavaScript 弹窗JavaScript 计时事件JavaScript CookieJS中的if和switch该如何选择?JS优化多分支结构JS中的while和for循环该如何选择?JS优化循环结构JS输出杨辉三角JS定义字符串(3种方式)JS获取字符串长度JS字符串拼接/连接(3种方式)JS字符串查找(6种方法)JS截取字符串JS字符串替换replace()JS字符串大写小写转换JS字符串比较大小JS字符串和数组之间的转换JS给字符串添加HTML标签JS去除字符串前后空格JS Unicode编码和解码JS Base64编码和解码JS在接收表单数据时过滤特殊字符JS自定义编码和解码方案

JavaScript 函数参数

JavaScript 函数对参数的值没有进行任何的检查


函数显式参数 ( Parameters ) 与 隐式参数 (arguments)

在之前的章节中,我们已经学会函数的显式参数

functionName(parameter1, parameter2, parameter3) {
    // 要执行的代码……
}

函数显式参数在函数定义时列出

函数隐式参数在函数调用时传递给函数真正的值


参数规则

JavaScript 函数定义时显式参数没有指定数据类型

JavaScript 函数对隐式参数没有进行类型检测

JavaScript 函数对隐式参数的个数没有进行检测


默认参数

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

有时这是可以接受的,但是建议最好为参数设置一个默认值

function myFunction(x, y) {
    if (y === undefined) {
          y = 0;
    } 
}

更简单的方式

function myFunction(x, y) {
    y = y || 0;
}

如果 y 已经定义 , y || 0 返回 y, 因为 y 是 true, 否则返回 0, 因为 undefined 为 false

如果函数调用时设置了过多的参数,参数将无法被引用,因为无法找到对应的参数名

只能使用 arguments 对象来调用


arguments 对象

JavaScript 函数有个内置的对象 arguments 对象

argument 对象包含了函数调用的参数数组

通过这种方式我们可以很方便的找到最大的一个参数的值

var x = findMax(1, 123, 500, 115, 44, 88);

function findMax() {
    var i, max = arguments[0];

    if(arguments.length < 2) return max;

    for (i = 0; i < arguments.length; i++) {
        if (arguments[i] > max) {
            max = arguments[i];
        }
    }
    return max;
}

或者创建一个函数用来统计所有数值的和

x = sumAll(1, 123, 500, 115, 44, 88);

function sumAll() {
    var i, sum = 0;
    for (i = 0; i < arguments.length; i++) {
        sum += arguments[i];
    }
    return sum;
}


通过值传递参数

在函数中调用的参数是函数的隐式参数

JavaScript 隐式参数通过值来传递:函数仅仅只是获取值

如果函数修改参数的值,不会修改显式参数的初始值 ( 在函数外定义)

隐式参数的改变在函数外是不可见的


通过对象传递参数

JavaScript中可以引用对象的值

因此我们在函数内部修改对象的属性就会修改其初始的值

修改对象属性可作用于函数外部(全局变量)

修改对象属性在函数外是可见的


链接: https://www.fly63.com/course/7_504