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

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. Vue急速入门-5

    vue-cli创建项目 前端工程化,项目>>>(vue-cli),创建处vue项目,单页面应用(spa) vue-cli创建项目开发,在项目中开发,最后上线,一定要编译 '纯粹的ht ...

  2. 题解 [SCOI2005]王室联邦

    之前树分块也只是听说,今天亲手学了一下(?)( 首先你会发现这个 \(B\) 和 \(3B\) 的约束就很迷(我也不知道为什么搞这种奇怪的约束(悲)),学了才知道... 所以这题的分块方法好像叫&qu ...

  3. linux 进程组和会话 守护进程

    这两个概念的产生,是为了shell更好的管理作业,管理其创建的子进程 对其进行暂停,终止 执行命令,命令之间有时还需要管道进行通信 进程组是进程的合集 会话是进程组的合集 一个会话共用一个控制终端,也 ...

  4. Vscode报错: error:0308010C:digital envelope routines::unsupported错误记录解决

    Vscode报错: error:0308010C:digital envelope routines::unsupported错误记录解决 因为安装了新版本的node才报的错误:node版本: v18 ...

  5. 查询自增ID断点的地方

    方法一 SELECT id+1 AS ID FROM table WHERE id+1 not in (SELECT id FROM table);

  6. Servlet简介和ServletContext

    0x01: 什么是Servlet? 是sun公司开发动态web的技术 实现了servlet接口的Java程序 0x02: Servlet的实现类有哪些? Servlet接口默认有两个实现类 HttpS ...

  7. PTA---求月天数

    最近做了几次模拟考试,对于求月天数这个题目有了更深一点的理解. 这个题的题目基本就是让用户输入年份和月份,给出该月有多少天. 对于这个题,首先就要考虑年份的问题,因为闰年和非闰年在二月是有一点不同的, ...

  8. element-ui upload自定义formdata上传文件和参数

      <el-upload list-type="text" action="" :http-request="HandleHttpRequest ...

  9. 制作 macOS U盘USB启动安装盘方法

    ​ 制作macOS U盘 1,首先你得有macOS的dmg文件,关于如何取得完整版,我在另一篇  Mac 如何用python下载Mac OS ,大家可以按自所需下载. 2,准备大于8GB U盘.打开 ...

  10. Software_Programming_bootstrap_book

    2019-10-25 HTML index    11  p24 主页布局.