轻松学习 JavaScript——第 3 部分:函数中的默认参数
来源:互联网 发布:软件开发cmm 编辑:程序博客网 时间:2024/05/16 13:40
点击上方“程序员大咖”,选择“置顶公众号”
关键时刻,第一时间送达!
JavaScript函数可以有默认参数值。通过默认函数参数,你可以初始化带有默认值的正式参数。如果不初始化具有某些值的参数,则该参数的默认值为undefined。
请看下列代码:
function foo(num1){ console.log(num1);}foo();
在调用函数foo时,你没有传递任何参数,因此变量num1的默认值设置为undefined。但是,有时你可能需要设置默认值而非undefined。过去,最好的策略是测试参数值undefined,然后分配一个值。所以,在上面的例子中,如果你想要将num1的默认值设置为9,那么你可以按照以下代码所示的方式做:
function foo(num1) { if (num1 === undefined) { num1 = 9; } console.log(num1);}foo();
ECMAScript 6引入了函数的默认参数。使用ECMA 2015的默认参数功能,你将不再需要检查未定义的参数值。现在,你可以将9设置为参数本身的默认值。你可以重写上述函数以使用默认值,如下所示:
function foo(num1 =9) { console.log(num1);}foo();
对于函数foo,如果num1参数的值未被传递,那么JavaScript将设置9作为num1的默认值。
检查未定义的参数
即使你在调用函数时明确地传递undefined作为参数值,参数值也将设置为默认值。
function foo(num1 =9) { console.log(num1);}foo(undefined);
在上面的代码中,你传递undefined为num1的值;因此,num1的值将被设置为默认值9。
运行时计算默认值
JavaScript函数默认值在运行时计算。为了更好地理解这一点,请看以下代码:
function foo(value = koo()) { return value;}function koo() { return "Ignite UI";}var a = foo();console.log(a);
在函数foo中,参数值的默认值设置为函数koo。在运行时调用函数foo时,将计算函数koo。调用foo函数后,你会得到如下图所示的输出(在这个例子中,我们使用了Ignite UI框架)。
重用默认参数
默认参数可供之后的默认参数使用。请看下列代码:
function foo(num1 = 9, num2 = num1 + 8){ console.log(num2);}foo();
在上面的代码中,使用num1的默认值来计算num2的默认值。调用函数foo时将得到以下输出:
结论
JavaScript默认参数在编写函数时非常有用。在调用函数时,如果缺少参数,则默认参数功能允许你为函数参数分配默认值,而不是将其定义为undefined。
链接:http://mp.weixin.qq.com/s/wzDko3UOHpInc-CWLbgSUQ
程序员大咖整理发布,转载请联系作者获得授权
【点击成为安卓大神】
- 轻松学习 JavaScript——第 3 部分:函数中的默认参数
- 轻松学习 JavaScript——第 2 部分:函数中的 Rest 参数
- 轻松学习 JavaScript (3):函数中的默认参数
- 轻松学习 JavaScript——第 4 部分:函数中的 arguments 对象
- 轻松学习 JavaScript——第 5 部分:简化函数提升
- 轻松学习 JavaScript (2):函数中的 Rest 参数
- 轻松学习 JavaScript——第 1 部分:了解 let 语句
- 轻松学习 JavaScript——第 1 部分:了解 let 语句
- JavaScript—函数参数:默认参数和剩余参数
- 轻松学习 JavaScript (4):函数中的 arguments 对象
- PHP学习笔记——默认参数的函数;
- 第四周项目1—三角形类的构造函数(3)使用有默认参数的构造函数
- c++函数中的默认参数
- C++函数中的默认参数
- 轻松学习JavaScript八:JavaScript函数
- 轻松学习JavaScript八:JavaScript函数
- 第四周 项目一 三角形的构造函数—使用有默认参数的构造函数
- 第5周项目1—三角形类雏形(4、默认参数的构造函数)
- REST API 最佳入门指南
- 总投资18亿!楼里还能玩攀岩!腾讯新总部“滨海大厦”长这样!
- maven安装遇到的坑
- linux解压压缩
- C++fish写了一个鉴别素数的程序
- 轻松学习 JavaScript——第 3 部分:函数中的默认参数
- 算二十四第三道
- 在Android模拟器上安装apk, INSTALL_FAILED_NO_MATCHING_ABIS解决方法
- 学习unity的有趣时刻 2.淡出淡入
- highcharts折线图-line,spline
- 网友们经历过的最难调试的Bug
- python安装pyserial
- Spring Boot Web API测试
- 【Opencv】 于仕琪 人脸68个特征点分布情况