• 函数参数-undefined-默认值-可选参数


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

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

    3、设置可选参数

    1)JS中:

    检测 undefined :
    function addNum(num) {
    if(num === undefined ) { num = 3 } return num } console.log(addNum(1)) // 1 console.log(addNum()) // 3
    使用 运算符|| :
    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())  // 1
    console.log(addNum())  // 3

    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;
    }
  • 相关阅读:
    SharePoint Server 2007 Beta2 Technical Refresh 安装提示
    SharePoint Server安全工具:Forefront for SharePoint
    7月6日,深圳OTEC成员会议
    数据字典存储事件实例
    C#学习:事件
    发布符合 .NET Framework 准则的事件
    ASP.NET缓存:用户控件缓存
    C#中用ToString方法格式化时间
    C#学习:委托
    实现接口事件
  • 原文地址:https://www.cnblogs.com/yuyedaocao/p/12059702.html
Copyright © 2020-2023  润新知