zoukankan      html  css  js  c++  java
  • 函数参数-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;
    }
  • 相关阅读:
    使用FolderBrowserDialog组件选择文件夹
    使用OpenFileDialog组件打开多个文
    使用OpenFileDialog组件打开对话框
    获取弹出对话框的相关返回值
    PAT 甲级 1139 First Contact (30 分)
    PAT 甲级 1139 First Contact (30 分)
    PAT 甲级 1138 Postorder Traversal (25 分)
    PAT 甲级 1138 Postorder Traversal (25 分)
    PAT 甲级 1137 Final Grading (25 分)
    PAT 甲级 1137 Final Grading (25 分)
  • 原文地址:https://www.cnblogs.com/yuyedaocao/p/12059702.html
Copyright © 2011-2022 走看看