ES6之函数的扩展

基本用法

function log(x,y = 'World') {
   console.log(x,y);
}
log('hello');   //hello World
log('hello', 'china');//hello china
log('hello',''); //hello 

与解构赋值默认值结合使用

# demo1
function foo({x, y = 5}) {
    console.log(x, y);
}

foo({});    //undefined, 5
foo({x:1}); //1,5
foo({x:1,y:2});//1,2
foo();  //x of undefined

ps:foo()参数为对象,变量x和y才会通过解构赋值而产生
   foo()参数不是对象,变量x和y就不会产生,从而报错


# demo2
function foo({x = 0, y = 0} = {}) {
 return [x, y];
}

function foo1({x, y} = {x: 0, y: 0}) {
 return [x, y];
}

foo()           //[0,0];
foo1()          //[0,0]

foo({x:3,y:8})  //[3,8]
foo1({x:3,y:8}) //[3,8]

foo({x:3})      //[3,0]
foo1({x:3})     //[3,undefined]

foo({})         //[0,0]
foo1({})        //[undefined,undefined]

foo({z:3})      //[0,0]
foo1({z:3})     //[undefined,undefined]


ps: foo()参数默认值是空对象,但是设置了对向解构赋值的默认值;
    foo1()参数默认值是一个有具体属性的函数,但是没有设置对象解构赋值的默认值  

参数默认值的位置

function foo(x = 1, y) {
    return [x, y];
}

foo();  //[1,undefined]
foo(2); //[2,undefined]
foo(,1);//error
foo(undefined,1);//[1,1]
ps:有默认值的参数都不是尾参数,无法只省略该参数而不省略其后的参数,除非显示输入undefined

function foo(x=5,y=6) {
    return [x,y];
}
foo(undefined,null);//[5,null]

ps:上面代码中,x==>undefined,处罚默认值,y==>null,并不触发默认值

函数的length属性

(function(a) {}).length;        //1
(function(a=5) {}).length;      //0
(function(a,b=5) {}).length;    //1
(function(...rest) {}).length;    //0   

ps:指定默认值后,函数的length属性将返回没有设置默认值得参数的个数,也就是参数设置默认值后,length的属性失效,rest参数也不计入length属性

rest参数


# 用于获取函数的多余参数
function add(...value) {
    let sum = 0;
    for (var val of value){
        sum += val;
    }
    return sum;
}

console.log(add(2, 5, 3));          //10

# 用rest参数代替arguments变量
const sortNumber = () => Array.prototype.slice.call(arguments).sort();  //arguments写法

const sortNumbers = (...numbers) => numbers.sort();                     //rest写法


# rest参数写成数组push方法
function push(arr, ...values) {
    values.forEach(function (item) {
        arr.push(item);
        console.log(item);          
    });
}

var a = [];
push(a, 1, 2, 2, 3, 4, 5);

# rest参数之后不能再有其他参数(即他只能是最后一个参数),否则会报错
//报错
function fn(a,...items, c) {
    // ... code
}

# 函数的length属性不包括rest参数
(function (a) {}).length;       // 1
(function (...a) {}).length;    // 0
(function (a,...b) {}).length;  // 1
资源下载链接为: https://pan.quark.cn/s/22ca96b7bd39 在当今的软件开发领域,自动化构建与发布是提升开发效率和项目质量的关键环节。Jenkins Pipeline作为一种强大的自动化工具,能够有效助力Java项目的快速构建、测试及部署。本文将详细介绍如何利用Jenkins Pipeline实现Java项目的自动化构建与发布。 Jenkins Pipeline简介 Jenkins Pipeline是运行在Jenkins上的一套工作流框架,它将原本分散在单个或多个节点上独立运行的任务串联起来,实现复杂流程的编排与可视化。它是Jenkins 2.X的核心特性之一,推动了Jenkins从持续集成(CI)向持续交付(CD)及DevOps的转变。 创建Pipeline项目 要使用Jenkins Pipeline自动化构建发布Java项目,首先需要创建Pipeline项目。具体步骤如下: 登录Jenkins,点击“新建项”,选择“Pipeline”。 输入项目名称和描述,点击“确定”。 在Pipeline脚本中定义项目字典、发版脚本和预发布脚本。 编写Pipeline脚本 Pipeline脚本是Jenkins Pipeline的核心,用于定义自动化构建和发布的流程。以下是一个简单的Pipeline脚本示例: 在上述脚本中,定义了四个阶段:Checkout、Build、Push package和Deploy/Rollback。每个阶段都可以根据实际需求进行配置和调整。 通过Jenkins Pipeline自动化构建发布Java项目,可以显著提升开发效率和项目质量。借助Pipeline,我们能够轻松实现自动化构建、测试和部署,从而提高项目的整体质量和可靠性。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值