函数的定义的四个注意部分,定义的两种方式及其分号结尾的情况,函数参数的2个关键字(arguments,rest),return正确写法
发布日期:2021-06-29 11:42:47
浏览次数:2
分类:技术文章
本文共 1630 字,大约阅读时间需要 5 分钟。
上述abs()
函数的定义如下:
function
指出这是一个函数定义;abs
是函数的名称;(x)
括号内列出函数的参数,多个参数以,
分隔;{ ... }
之间的代码是函数体,可以包含若干语句,甚至可以没有任何语句。结尾没有分号。
function abs(x) { if (x >= 0) { return x; } else { return -x; }}
如果没有return
语句,函数执行完毕后也会返回结果,只是结果为undefined
。由于JavaScript的函数也是一个对象,上述定义的abs()
函数实际上是一个函数对象,而函数名abs
可以视为指向该函数的变量。第二种定义函数的方式如下:注意第二种方式按照完整语法需要在函数体末尾加一个分号;
表示赋值语句结束。
var abs = function (x) { if (x >= 0) { return x; } else { return -x; }};
由于JavaScript允许传入任意个参数而不影响调用,当传入的参数比定义的参数多时,函数内部并不需要多余的这些参数;当传入的参数少时,未定义的参数的值为undefined,那么计算结果为NaN:
abs(); // 返回NaN
要避免收到undefined
,请对参数进行检查:
function abs(x) { if (typeof x !== 'number') { throw 'Not a number'; } if (x >= 0) { return x; } else { return -x; }}
利用arguments
,你可以获得调用者传入的所有参数。也就是说,即使函数不定义任何参数,还是可以拿到参数的值;实际上arguments
最常用于判断传入参数的个数。arguments
类似Array
但它不是一个Array。
function foo(x) { console.log('x = ' + x); // 10 for (var i=0; i
利用rest参数可以获取多余的参数。它只能写在最后,前面用...
标识,从运行结果可知,传入的参数先绑定a
、b
,多余的参数以数组形式交给变量rest
,所以,不再需要arguments
我们就获取了全部参数。如果传入的参数连正常定义的参数都没填满,也不要紧,rest参数会接收一个空数组(注意不是undefined
)。
function foo(a, b, ...rest) { console.log('a = ' + a); console.log('b = ' + b); console.log(rest);}foo(1, 2, 3, 4, 5);// 结果:// a = 1// b = 2// Array [ 3, 4, 5 ]foo(1);// 结果:// a = 1// b = undefined// Array []
return正确的写法,是下面两种:
function foo() { return { name: 'foo' }; // 第一种和返回参数在同一行}foo(); // { name: 'foo' }function foo() { return { // 第二种,一定要加{,那么这里不会自动加分号,因为{表示语句尚未结束 name: 'foo' };}function foo() { return // 错误的方式,这里识别为一个语句,那么会自动添加分号,相当于return undefined; { name: 'foo' }; // 这行语句已经没法执行到了}
转载地址:https://blog.csdn.net/zz2230633069/article/details/108192737 如侵犯您的版权,请留言回复原文章的地址,我们会给您删除此文章,给您带来不便请您谅解!
发表评论
最新留言
很好
[***.229.124.182]2024年04月09日 21时11分22秒
关于作者
喝酒易醉,品茶养心,人生如梦,品茶悟道,何以解忧?唯有杜康!
-- 愿君每日到此一游!
推荐文章
Three.js Example 注解 —— canvas_sandbox.html
2019-04-29
Three.js Example 注解 —— css3d_panorama.html
2019-04-29
Three.js Example 注解 —— css3d_sandbox.html
2019-04-29
Three.js Example 注解 —— css3d_youtube.html
2019-04-29
Three.js Example 注解 —— misc_uv_tests.html
2019-04-29
VS 命令提示工具
2019-04-29
OpenCV4 Android 颜色空间转换
2019-04-29
Android 获取根视图
2019-04-29
adb 提取已安装的apk
2019-04-29
Intellij IDEA Community 实现 Ultimate 的功能
2019-04-29
移动端页面调试工具 vConsole 与 eruda
2019-04-29
CSS3 隐藏滚动条(支持 chrome、firefox、edge)
2019-04-29
Ubuntu 常用命令
2019-04-29
Ubuntu 下 VSCode开发 Spring Boot
2019-04-29
HBase 环境搭建
2019-04-29