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

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. 躬身入局,干货分享,2023年春招后端技术岗(Python)面试实战教程,Offer今始为君发

    早春二月,研发倍忙,杂花生树,群鸥竟飞.为什么?因为春季招聘,无论是应届生,还是职场老鸟,都在摩拳擦掌,秣马厉兵,准备在面试场上一较身手,既分高下,也决Offer,本次我们打响春招第一炮,躬身入局,让 ...

  2. Vue学习:实现用户没有登陆时,访问后自动跳转登录页面

    设计思路 定义路由的时候配置属性,这里使用needLogin标记访问页面是否需要登录 设置路由守卫,每个页面在跳转之前都要经过验证,校验用户信息是否存在,不存在跳转到登录页 用户登录后将用户信息存储在 ...

  3. Kafka主题,分区,副本介绍

    介绍 今天分享一下kafka的主题(topic),分区(partition)和副本(replication),主题是Kafka中很重要的部分,消息的生产和消费都要以主题为基础,一个主题可以对应多个分区 ...

  4. redis(13)持久化操作-AOF

    AOF(Append Only File) 以日志的形式来记录每个写操作(增量保存),将 Redis 执行过的所有写指令记录下来 (读操作不记录), 只许追加文件但不可以改写文件,redis 启动之初 ...

  5. C# 属性空引用警告

    whereExpression = whereExpression.And(u => u.ValueInterger.ToString() != null &&** u.Valu ...

  6. mysql explain 查看sql语句执行计划概述

    mysql explain 查看sql语句执行计划概述 id:选择标识符select_type:表示查询的类型.table:输出结果集的表partitions:匹配的分区type:表示表的连接类型po ...

  7. DataTransfer.setDragImage()自定义拖拽图像遇到的坑

    发生拖动时,从拖动目标(dragstart事件触发的元素)生成半透明图像,并在拖动过程中跟随鼠标指针.这个图片是自动创建的,你不需要自己去创建它.然而,如果想要设置为自定义图像,那么 DataTran ...

  8. Vue 超长列表渲染性能优化

    参考:https://juejin.cn/post/6979865534166728711#heading-3 组件懒加载参考:https://github.com/xunleif2e/vue-laz ...

  9. element ui 浏览器表单自动填充默认样式

    ::v-deep .el-input__inner {     -webkit-text-fill-color: #000000;     caret-color: #0a0a0a;     box- ...

  10. Rancher 使用介绍(可以通过界面管理 K8s 平台)

    参考链接 https://blog.csdn.net/weixin_46902396/article/details/122433622 https://www.hugedomains.com/dom ...