资讯专栏INFORMATION COLUMN

js函数的默认参数(default parameter)

XanaHopper / 2252人阅读

摘要:函数的默认参数函数参数的默认值都是,里,不支持直接在形参里写默认值。所以,要设置默认值,就要检测参数是否为,按需求赋值。

js函数的默认参数(default parameter)

js函数参数的默认值都是undefinedES5里,不支持直接在形参里写默认值。所以,要设置默认值,就要检测参数是否为undefined,按需求赋值。

function multiply(a, b) {
  b = typeof b !== "undefined" ?  b : 1;

  return a*b;
}

multiply(5); // 5
multiply(5, 0); // 0

上面是MDN的相关例子,是比较严谨的写法。不推荐下面的写法:

function multiply(a, b) {
  b = b ?  b : 1;  // b = b || 1;

  return a*b;
}

multiply(5); // 5
multiply(5, 0); // 5

因为,在布尔类型环境中undefined, 0, "", NaN, null会被转换成 false

进一步,还可以先利用arguments对象,再设置默认值 :

function multiply(a) {
  var b = typeof arguments[1] !== "undefined" ? arguments[1] : 1;

  return a*b;
}

 multiply(5); // 5
 multiply(5, 0); // 0

ES6里已经支持默认参数了,直接写就好啦:

function multiply(a, b = 1) {
  return a*b;
}

multiply(5); // 5

ES6还支持解构赋值来设置默认参数:

jQuery.ajax = function (url, {
  async = true,
  beforeSend = function () {},
  cache = true,
  complete = function () {},
  crossDomain = false,
  global = true,
   // ... more config
}) {
   // ... do stuff
};

更详细的介绍,请看阮一峰的ECMAScript 6 入门的函数的拓展。

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/82728.html

相关文章

  • [译]Loadtest库做负载测试

    摘要:在选定的或者上进行负载测试,允许在你自己的测试里轻松集成。使用提供的非常容易整合到你的包里进行编程负载测试。在部署新版本软件之前,使运行负载测试成为系统测试的一部分变得非常容易。 前言 因为最近学习需要用到一些测试库测试性能,但是工具又太复杂不好用,恰好发现有这么一个库用法输出都很近似,可惜没有找到有中文版或者用法笔记,所以只好耐心一点一点翻译出来。因为我的英文水平很一般,而这种技术博...

    asoren 评论0 收藏0
  • Laravel核心——Ioc服务容器源码解析(服务器解析)

    摘要:而函数作用是加载延迟服务,与容器解析关系不大,我们放在以后再说。在构造之前,服务容器会先把放入中,继而再去解析。利用服务容器解析依赖的参数。 make解析 首先欢迎关注我的博客: www.leoyang90.cn 服务容器对对象的自动解析是服务容器的核心功能,make 函数、build 函数是实例化对象重要的核心,先大致看一下代码: public function make($abst...

    hearaway 评论0 收藏0
  • 腾讯 AlloyTeam 移动 Web 裁剪组件 AlloyCrop 正式开源

    摘要:兼容性如何支持以及的设备的浏览器便可运行不一一列举一共不到行为什么体积这么小腾讯手内大量的都会去不断地从各个维度进行性能优化。腾讯内部有哪些项目在用目前主要是兴趣部落群等业务在用,刚刚开源出来,只要有裁剪图片的地方都会用到。 传送门 Github地址:https://github.com/AlloyTeam/AlloyFinger/tree/master/alloy_crop 在线De...

    yexiaobai 评论0 收藏0
  • ES6 中模式匹配和默认参数

    摘要:中,引入了其他很多语言都具备的模式匹配和默认参数语法糖,使得代码简洁了不少。模式匹配中需要注意的触发默认值如下所示右侧的元素会触发左侧的默认值。 ES6 中,引入了其他很多语言都具备的模式匹配和默认参数语法糖,使得代码简洁了不少。但是使用的时候还是有些细节需要注意。 模式匹配原理 模式匹配的种类 具体来说,有三种类型的模式匹配: 直接赋值 let a = 1; 对象模式 let...

    Loong_T 评论0 收藏0
  • ES6对函数改动

    摘要:改动函数的改变不算太大,都是一些其他语言早就有的功能,而一直比较欠缺的,比如函数参数默认值,任意参数的表示法,最大的变化应该是支持箭头函数其他语言称之为表达式,一种对匿名函数的一种简写方式,以下来探讨一下函数在中的一些改变默认参数任意参数操 ES6 functions改动     ES6函数的改变不算太大,都是一些其他语言早就有的功能,而Javascript一直比较欠缺的,比如函数参数...

    kk_miles 评论0 收藏0

发表评论

0条评论

XanaHopper

|高级讲师

TA的文章

阅读更多
最新活动
阅读需要支付1元查看
<