文档章节

JavaScript要点 (六) 函数参数

MR_BT
 MR_BT
发布于 2017/01/21 01:01
字数 601
阅读 5
收藏 0

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


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

函数的显式参数:

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

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

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

 


 

参数规则

 

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

 

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

 

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


 

 

默认参数

 

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

 

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

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

或者

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

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


 

Arguments 对象如果函数调用时设置了过多的参数,参数将无法被引用,因为无法找到对应的参数名。 只能使用 arguments 对象来调用。

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

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

通过这种方式你可以很方便的找到最后一个参数的值:

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

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

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 }

 

通过值传递参数

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

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

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

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


 

通过对象传递参数

在JavaScript中,可以引用对象的值。

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

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

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

 

本文转载自:http://www.cnblogs.com/tig666666/p/5919378.html

共有 人打赏支持
MR_BT
粉丝 0
博文 49
码字总数 13680
作品 0
深圳
高级程序员
私信 提问
Node.js开发者必须了解的4个JS要点

Node.js是一个面向服务器的框架,立足于Chrome强大的V8 JS引擎。尽管它由C++编写而成,但是它及其应用是运行在JS上的。本文为开发者总结了4个Node.js要点。 1. 非阻塞(Non-blocking)或异步I...

前端全栈开发学习
2018/11/13
0
0
JavaScript 的 4 种数组遍历方法: for VS forEach() VS for/in VS for/of

译者按: JS 骚操作。 原文:For vs forEach() vs for/in vs for/of in JavaScript 译者: Fundebug 本文采用意译,版权归原作者所有 我们有多种方法来遍历 JavaScript 的数组或者对象,而它们...

Fundebug
03/11
0
0
JavaScript 基础 --- (数据类型/循环/条件)

一、js 输出 1.window.alert() 警告框 2.document.write() 写到 HTML 文档中 3.innerHTML 写到 HTML 元素 4.console.log() 写到浏览器的控制台 二、js 语句与注释 1. ; (var a = 1;) ;表...

姜白告
2018/06/19
0
0
重构你的javascript代码

重构,对于每个开发者都至关重要,特别是对于那些需要进阶的高级程序员。根据二八理论,20%的重构方法,能解决80%的坏代码。笔者最近查阅较多js编码指南以及重新阅读了《代码整洁之道》、《重...

lq782655835
01/22
0
0
JavaScript 中的继承:ES3、ES5 和 ES6

选择一种继承方式 JavaScript 是一门动态语言,动态意味着高灵活性,而这尤其可以体现在继承上面。JavaScript 中的继承有很多种实现方式,可以分成下面四类: Mixin 模式,即属性混入,从一个...

天方夜
2018/10/30
0
0

没有更多内容

加载失败,请刷新页面

加载更多

day11

architect刘源源
51分钟前
3
0
论学好Linux系统的超级重要性

不知道各位在日常的工作生活中有没有接触过“rm -rf /*”这个命令,因为这个命令搞出来的事情可还不少呢!前段时间就在一个群里看到了有个小伙子,老板让他去维护一下服务器,这小伙也不太懂...

Linux就该这么学
昨天
1
0
git 使用

1,首先在github配置好信息和仓库,然后在本地进行操作 git init git config user.name 'zhangwuer' git config user.email '56789053@qq.com' 2,与远程分支建立连接 git checkout -b test......

天王盖地虎626
昨天
3
0
git checkout 命令详解

在日常的git操作中,git checkout——检出,是我们的常用命令。最为常用的两种情形是创建分支和切换分支。 在下面的命令中,使用了一些简写,在这里说明一下: git st # git statusgit ci ...

shzwork
昨天
8
0
【Nginx】Nginx多级代理,获取客户端真实请求IP以及每级代理IP

Nginx多级代理,获取客户端真实请求IP以及每级代理IP 如图所示,每一级nginx里的location配置里需要加上对应的配置,最后一级nginx是直接到应用,测试时为了方便,直接用echo模块去测试,打印...

薛定谔的旺
昨天
7
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部