1、函数参数为undefined时,触发参数默认值

2、实参数量 < 形参数量,多余的形参值为 underfined

3、设置可选参数

1)JS中:

检测 undefined :
function addNum(num) {
if(num === undefined ) {
num = 3
}
return num
}
console.log(addNum(1)) //
console.log(addNum()) //
使用 运算符|| :
function addNum(num) {
   option = option || {};
   option.start = option.start || 0;
   option.end = option.end || 10;
   option.step = option.step || 1; 
   return option 
}
 console.log(move({start:4,end:5,step:2})); //{start: 4, end: 5, step: 2}
 console.log(move({start:4,step:2})); // {start: 4, step: 2, end: 10}
使用 arguments.length :
function addNum(num) {
if(arguments.length<1){
return 3;
}
return num
}
console.log(addNum()) //
console.log(addNum()) //

2)ES6中:

a、默认声明的参数,不能在函数体中再次用声明

b、参数默认值是惰性求值的

c、默认值参数位置应该是函数的尾参数

d、指定默认值以后,函数的length属性将返回没有执行默认值的参数个数

function addr(x,y=1,z=3){ }
实现原理:
function addr(x) {
var y = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 1;
var z = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : 3;
}
解构赋值默认值:
function add({x = 0 , y = 0} = { } ){ }
add({x:1,y:2}) // x=1 , y =2
add({x:1}) // x=1,y=0
add() // x=0,y=0
区分:
function add({x , y } = { x:0 , y:0 } ){ }
add({x:1,y:2}) // x=1 , y =2
add({x:1}) // x=1,y=undefined
add() // x=undefined,y=undefined 内部实现原理:
function addr() {
  var _ref = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {},
_ref$x = _ref.x,
  x = _ref$x === void 0 ? 0 : _ref$x,
  _ref$y = _ref.y,
  y = _ref$y === void 0 ? 0 : _ref$y;
}

函数参数-undefined-默认值-可选参数的更多相关文章

  1. Swift语言中为外部参数设置默认值可变参数常量参数变量参数输入输出参数

    Swift语言中为外部参数设置默认值可变参数常量参数变量参数输入输出参数 7.4.4  为外部参数设置默认值 开发者也可以对外部参数设置默认值.这时,调用的时候,也可以省略参数传递本文选自Swift1 ...

  2. JS中给函数参数添加默认值

    最近在Codewars上面看到一道很好的题目,要求用JS写一个函数defaultArguments,用来给指定的函数的某些参数添加默认值.举例来说就是: // foo函数有一个参数,名为x var f ...

  3. ES6 函数参数的默认值

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

  4. JS中给函数参数添加默认值(多看课程)

    JS中给函数参数添加默认值(多看课程) 一.总结 一句话总结:咋函数里面是可以很方便的获取调用函数的参数的,做个判断就好,应该有简便方法,看课程. 二.JS中给函数参数添加默认值 最近在Codewar ...

  5. (转)js函数参数设置默认值

    原文:http://www.cnblogs.com/RightDear/archive/2013/06/26/3156652.html js函数参数设置默认值   php有个很方便的用法是在定义函数时 ...

  6. js函数参数设置默认值

    php有个很方便的用法是在定义函数时可以直接给参数设默认值,如: function simue ($a=1,$b=2){  return $a+$b;}echo simue(); //输出3echo ...

  7. Python中定义函数时参数有默认值的小陷阱

    在定义函数的时候,如果函数的参数有默认值,有两种类型的参数,一种是整数,字符串这种不可变类型,另一种是列表这种可变类型,对于第一种情况没有什么特殊的地方,但是对于可变类型,有一个微妙的小陷阱. 可变类 ...

  8. 学习《深入理解C#》—— 可空类型、可选参数和默认值 (第一章1.3)

    目录 C#可空类型 C# 可选参数和默认值 C# 可空类型 在日常生活中,相信大家都离不开手机,低头族啊!哈哈... 假如手机厂商生产了一款新手机,暂时还未定价,在C#1中我们该怎么做呢? 常见的解决 ...

  9. js 的函数参数的默认值问题

    js函数参数设置默认值   php有个很方便的用法是在定义函数时可以直接给参数设默认值,如: function simue ($a=1,$b=2){ return $a+$b; } echo simu ...

随机推荐

  1. TP5模型belongsTo和hasOne这两个方法的区别

    在使用tp5模型的ORM的时候出现belongsTo和hasOne都有表示一对一的关系,但是二者并不相同.以下举例说明两者的区别: 首先有user表 字段 id name password字段 然后有 ...

  2. 关于字符串中每个单词的首字母大写化问题之 拆分split(/\s+/)

    var a = 'Hi, my name\'s Han Meimei, a SOFTWARE engineer'; //for循环 function titleCase(s) { var i, ss  ...

  3. flask的session基础认识

    from flask import Flask,session from datetime import timedelta import os app = Flask(__name__) app.c ...

  4. (5.14)mysql高可用系列——级联复制与多主一从

    目录: [0]实验需求 级联复制,201为主库,202为从库/同时为203的主库,203为202的从库[1]实验环境 级联:A->B->C 实践思路: (1)直接拿A的xtrabackup ...

  5. [转帖]图解SSL/TLS协议

    图解SSL/TLS协议   作者: 阮一峰 日期: 2014年9月20日 感谢 腾讯课堂NEXT学院 赞助本站,腾讯官方的前端课程 免费试学. http://www.ruanyifeng.com/bl ...

  6. 「java.util.concurrent并发包」之 ThreadPoolExecutor

    一 异步用new Thread? 大写的"low"!! new Thread(new Runnable() { @Override public void run() { // T ...

  7. SpringCloud组件及功能介绍

    1.什么是SpringClould?    SpringCloud是一个基于SpringBoot实现的微服务架构开发工具.它为微服务架构中涉及的配置管理.服务治理.断路器.智能路由.微代理.控制总线. ...

  8. c++学习笔记之函数重载和模板理解

    1.函数重载: C++ 不允许变量重名,但是允许多个函数取相同的名字,只要参数表不同即可,这叫作函数的重载(其英文是 overload).重载就是装载多种东西的意思,即同一个事物能完成不同功能. 所谓 ...

  9. JS实现点击查看密码功能,再次点击隐藏密码!

    <table border='1'> <tr> <td>aaaa</td> <td onclick="myFunction(this.i ...

  10. JavaScript设计模式(发布订阅模式)

    发布—订阅模式又叫观察者模式,它定义对象间的一种一对多的依赖关系,当一个对象的状态发生改变时,所有依赖于它的对象都将得到通知.在JavaScript开发中,我们一般用事件模型来替代传统的发布—订阅模式 ...