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

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. 基于minikube快速搭建kubernetes单节点环境

    一.说明 本文主要介绍在 Centos7 环境下基于 Minikube 来快速部署 Kubernetes 单节点集群环境,并在浏览器上访问部署在 k8s 上的 dashboard 服务. 二.Mini ...

  2. setInterval()的使用

    setInterval() 作用  这个函数可以将一个函数每隔一段时间执行一次 参数  1.回调函数,该函数会每隔一段时间被调用一次  2.每次调用间隔的时间,单位是毫秒 返回值  返回一个Numbe ...

  3. 来了!来了!国内使用chatGPT的方式总结

    大家好,最近ChatGPT大火呀. 最近几天OpenAI发布的ChatGPT聊天机器人火出天际了,连着上了各个平台的热搜榜. 这个聊天机器人最大的特点是不仅可以模仿人类说话风格同时回答大量问题,能和你 ...

  4. Linux centos 代替方案: Rocky Linux (centos作者)

    官网: Rocky Linux

  5. IP转换

    IP转换 目录 IP转换 1 127.1 ? 2 IPv4两段点分十进制表示 3 IPv4一段十进制表示 4 IPv4地址有效地变换形式 5 IP地址进制转换网站 6 参考博客 1 127.1 ? 首 ...

  6. 两个集合之间数据过滤linq

    //以下为前台多字段循环匹配if (!input.Filter.IsNullOrEmpty()) { var keysList = input.Filter.Split(" ".T ...

  7. 路飞项目使用mysql数据库详细讲解

    目录 一.首先需要彻底删除原有的数据库步骤 二.去官网下载mysql步骤 三.安装mysql数据库步骤 四.一管理员身份进去cmd进行一系列命令启动 五.接下来为路飞项目创建数据库 六.luffy项目 ...

  8. 97、UserAgentUtils

    user-agent-utils 是一个用来解析 User-Agent 字符串的 Java 类库. 其能够识别的内容包括: 超过150种不同的浏览器: 7种不同的浏览器类型: 超过60种不同的操作系统 ...

  9. echarts来显示世界地图和全国地图,并且可以下钻层级

    echarts来显示世界地图和全国地图,并且可以下钻层级 使用echarts来显示世界地图和全国地图,并且可以下钻层级 使用的技术 现有的功能 遇到的问题解决 总结 参考内容 直接来源码,地球资源包我 ...

  10. 浅谈hive

    hive支持sql标准的数据仓库,可以将sql语句转化成mr程序执行.基础分析一般用hive来做,比较复杂的用mr来做数据仓库和数据库的区别    数据仓库:历史数据,面向分析,保证数据的完整性可以允 ...