联系我们 - 广告服务
您的当前位置:主页 > 实战 > 代码 >

函数定义和调用

来源:未知 编辑:admin 时间:2018-01-19
导读: 首先学习一下如何定义函数和调用函数。定义函数在JavaScript中,定义函数用function关键字,主要方式如下: 上述abs()函数的定义如下: function指出这是一个函数定义; abs是函数的名称; (x)括号内列出函数的参数,多个参数以,分隔; {...}之间的代码
首先学习一下如何定义函数和调用函数。定义函数在JavaScript中,定义函数用function关键字,主要方式如下:

上述abs()函数的定义如下:· function指出这是一个函数定义;· abs是函数的名称;· (x)括号内列出函数的参数,多个参数以“,”分隔;· {...}之间的代码是函数体,可以包含若干语句,甚至可以没有任何语句。请注意,函数体内部的语句在执行时,一旦执行到return语句时,函数就执行完毕,并将结果返回。因此,函数内部通过条件判断和循环可以实现非常复杂的逻辑。如果没有return语句,则函数执行完毕后也会返回结果,只是结果为undefined。JavaScript的函数其实也是一个特殊对象,上述定义的abs()函数实际上是一个函数对象,而函数名abs可以被视为指向该函数的变量。因此,第二种定义函数的方式如下:

在这种方式下,function (x) {...}是一个匿名函数,它没有函数名。但是,这个匿名函数赋值给了变量abs,所以,通过变量abs就可以调用该函数。上述两种定义完全等价,注意,第二种方式按照完整语法规则需要在函数体末尾加一个“;”,表示赋值语句结束。
调用函数
在调用函数时,按顺序传入参数即可。下面修改index.js:

由于JavaScript允许传入任意个参数而不影响调用,因此传入的参数比定义的参数多也没有问题,虽然函数内部并不需要这些参数:

传入的参数比定义的少也没有问题:

此时,abs(x)函数的参数x将收到undefined,计算结果为NaN。要避免收到undefined,可以对参数进行检查,typeof是判断数据类型的关键字,throw是抛出异常关键字:

我们还可以把在一个文件中定义的函数暴露出去,让别的文件可以引入调用。比如微信小程序默认生成的项目utils.js:

在logs.js中导入和使用:

其中导入还可以换一种写法:

arguments参数JavaScript还有一个免费赠送的关键字arguments,它只在函数内部起作用,并且永远指向当前函数的调用者传入的所有参数。arguments类似数组,但它不是一个数组:利用arguments,可以获得调用者传入的所有参数。也就是说,即使函数不定义任何形式参数,还是可以拿到参数的值:


实际上,arguments常用于判断传入参数的个数。你可能会看到这样的写法:

要把中间的参数b变为“可选”参数,就只能通过arguments判断,然后重新调整参数并赋值。rest参数ES6标准引入了rest参数,多余的参数以数组形式交给变量rest,所以,我们不再需要arguments就获取了全部参数。rest参数只能写在最后,前面用...标识,如果传入的参数连正常定义的参数都没填满,那么也不要紧,rest参数会接收一个空数组(注意不是undefined)。示例代码:

常见问题JavaScript引擎有一个在行末自动添加分号的机制,这本来是一件好事儿,但是这可能让你栽到return语句的一个大“坑”里:

上面的代码没有问题,但是如果把return语句拆分成两行:

那么这时候就出问题了,由于JavaScript引擎具有在行末自动添加分号的机制,上面的代码实际上变成了:

正确的多行语句的写法是:
责任编辑:admin

打赏

取消

感谢您的支持,我会继续努力的!

扫码支持
扫码打赏,你说多少就多少

打开支付宝扫一扫,即可进行扫码打赏哦

上一篇:JavaScript函数
下一篇:变量作用域

网友评论:

在“\templets\demo\comments.htm”原来的内容全部删除,插入第三方评论代码,如果不需要评论功能,删除comments.html里面的内容即可
推荐使用友言、多说、畅言(需备案后使用)等社会化评论插件

Copyright © Tricks资讯网 版权所有
本站所有资讯来源于网络 如有侵权请联系QQ:940910888 技术支持鹏博科技
Top