以前的写法,利用短路原则来写:

function haosy(name,age){
name=name||'小郝';
age=age||21;
alert('读者你好,我是作者'+name+',芳龄'+age+'岁。');
}
调用:
情况一:
haosy('王八蛋',20) 输出:读者你好,我是作者王八蛋,芳龄20岁。
情况二:
haosy('王八蛋') 输出:读者你好,我是作者王八蛋,芳龄21岁。
情况三:
haosy(null,22) 输出:读者你好,我是作者小郝,芳龄22岁。
情况四:
haosy(); 输出:读者你好,我是作者小郝,芳龄21岁。

现在我们使用ES6给出的默认值写法。

1.基本用法

function haosy(name='小郝',age=21){
console.log('读者你好,我是作者'+name+',芳龄'+age+'岁。');
} haosy(); 输出:读者你好,我是作者小郝,芳龄21岁。
haosy('王八蛋',20); 输出:读者你好,我是作者王八蛋,芳龄20岁。
haosy('王八蛋') 输出:读者你好,我是作者王八蛋,芳龄21岁。
//TODO...

2.与解构赋值默认值结合

function haosy({name,age=21}){
console.log('读者你好,我是作者'+name+',芳龄'+age+'岁。');
} haosy({}); 输出:读者你好,我是作者小郝,芳龄21岁。
haosy({name:'王八蛋'}); 输出:读者你好,我是作者王八蛋,芳龄21岁。
haosy({name:'王八蛋',age:20}); 输出:读者你好,我是作者王八蛋,芳龄20岁。
//TODO...

与基本用法的区别:

优点:这种写法在传入多个形参时可以不按顺序写,会方便;

缺点:如果不传入参数的时候,每次都要 haosy({}) 要写 {} 比较麻烦,因此,我们可以再设置一次默认值。

3.双重默认值

function haosy({name='小郝',age=21}={}){
console.log('读者你好,我是作者'+name+',芳龄'+age+'岁。');
} haosy(); 输出:读者你好,我是作者小郝,芳龄21岁。
haosy({name:'王八蛋'}); 输出:读者你好,我是作者王八蛋,芳龄21岁。
haosy({name:'王八蛋',age:20}); 输出:读者你好,我是作者王八蛋,芳龄20岁。
												

js函数参数默认值的更多相关文章

  1. Python函数参数默认值的陷阱和原理深究"

    本文将介绍使用mutable对象作为Python函数参数默认值潜在的危害,以及其实现原理和设计目的 本博客已经迁移至: http://cenalulu.github.io/ 本篇博文已经迁移,阅读全文 ...

  2. java函数参数默认值

    java函数参数默认值 今天,需要设定java函数参数的默认值,发现按照其它语言中的方法行不通 java中似乎只能通过函数的重载来实现 函数参数默认代码

  3. ES6学习 --函数参数默认值与解构赋值默认值

    1. ES6的解构ES6中引入了解构赋值的操作,其作用是:将值从数组Array或属性从对象Object提取到不同的变量中 即分为两种情况:从数组Array中解构,以及从对象Object中解构 ①.从数 ...

  4. Python函数参数默认值的陷阱和原理深究(转)

    add by zhj: 在Python文档中清楚的说明了默认参数是怎么工作的,如下 "Default parameter values are evaluated when the func ...

  5. ES6函数参数默认值作用域的模拟原理实现与个人的一些推测

    一.函数参数默认值中模糊的独立作用域 我在ES6入门学习函数拓展这一篇博客中有记录,当函数的参数使用默认值时,参数会在初始化过程中产生一个独立的作用域,初始化完成作用域会消失:如果不使用参数默认值,不 ...

  6. ES6 - 函数扩展(函数参数默认值)

    函数参数默认值 ES6 之前,不能直接为函数的参数指定默认值,只能采用变通的方法. function log(x, y) { y = y || 'World'; console.log(x, y); ...

  7. 【C#基础概念】函数参数默认值和指定传参和方法参数

    函数参数默认值和指定传参 最近在编写代码时发现介绍C#参数默认值不能像PL/SQL那样直接设置default,网上也没有太多详细的资料,自己琢磨并试验后整理成果如下: C#允许在函数声明部分定义默认值 ...

  8. ES6 学习笔记之三 函数参数默认值

    定义函数时为参数指定默认值的能力,是现代动态编程语言的标配.在ES6出现之前,JavaScript是没有这种能力的,框架为了实现参数默认值,用了很多技巧. ES6 的默认参数值功能,与其他语言的语法类 ...

  9. ES6中函数参数默认值问题

    参数默认值 // 以前的参数默认值写法 let fn = (a, b) => { a = typeof a === "undefined" ? 10 : a b = type ...

  10. js定义参数默认值

    javascript可以用arguments定义参数组.   一.简单的定义参数默认值 function test1(a,b){ //如果有参数一,则返回参数一,如果没有返回默认值"这是参数 ...

随机推荐

  1. JZOJ 1082. 【GDOI2005】选址

    \(\text{Problem}\) 很久以前,在世界的某处有一个形状为凸多边形的小岛,岛上的居民们决定建一个祭坛,居民们任务祭坛的位置离岛的顶点处越远越好. 你的任务是求凸多边形内一点,使其与各顶点 ...

  2. JZOJ 3469. 【NOIP2013模拟联考7】数列(sequence)

    \(\text{Solution}\) 明显的 \(\text{K-D Tree}\) 基操题 提前给出了数列,那么考虑提前建好树,省去重构 但还是要开 \(O\) \(\text{Code}\) # ...

  3. 梅毒感染者能否应用TNF抑制剂

    对于伴发的未经控制的任何严重感染,都不适合使用TNF抑制剂.在1998年国际上首个TNF抑制剂获批治疗类风湿关节炎(RA)以来,这就是广大临床医生和风湿性疾病患者的共识.在临床实践中,需要权衡药物的利 ...

  4. Pdfjs第三方插件使用

    项目中时常会遇到在线预览PDF文件的需求,网上一找也能找到很多,但被使用率高的并不多,经过多次实验发现被应该最多的还属pdfjs插件. 首先介绍下:Pdf.js插件是由Mozilla 主导推出的 作用 ...

  5. 基于Docker使用CTB生成地形切片并加载

    1. 引言 CTB(Cesium Terrain Builder)是一个用于地形切片的C++编写的命令行工具 GitHub地址为:GitHub - geo-data/cesium-terrain-bu ...

  6. postgresql索引使用情况及坏索引处理

    1.postgresql中索引系统视图pg_stat_user_indexes TEST=# \d+ sys_stat_user_indexes View "SYS_CATALOG.sys_ ...

  7. antd切换主题

    { "name": "my-react-app", "version": "0.1.0", "private& ...

  8. centos8 安装docker启动失败

    借鉴https://www.zqcnc.cn/post/71.html systemctl status docker● docker.service - Docker Application Con ...

  9. 升级sqlite3

    原文连接: https://blog.zhheo.com/p/22f4cbb2.html 创建一个工作目录(可选) Code 12 mkdir sqlite3_upgradecd sqlite3_up ...

  10. crontal 计划任务

    crontab每分钟定时执行: */1 * * * * service mysqld restart //每隔1分钟执行一次 */10 * * * * service mysqld restart / ...