JS之函数

function add(x,y){        //函数,声明提升,可以在函数定义之前调用
    return x+y
}

var add = function (x,y){ //函数表达式,不会提升声明
    return x+y
}

var sum1 = function _sum(x){ //函数表达式不省略名字,也只能在函数内部使用
    if (x==1)               // if后不能加分号
    return 1;
    return x+_sum(x-1);
}
// console.log(sum(5))

const counter = function (){
    let c = 0
    return function (){
        return ++c
    }
}
c = counter()

arr = new Array(1,2,3,4,5)
var map = function map(arr,fn){
    let newarry = []
    for (i in arr)
        newarry[i] = fn(arr[i])
    return newarry
}


// console.log(map(arr,function(x) {return ++x}))//匿名函数
// console.log(map(arr,x=>++x)) //箭头函数,就是匿名函数,更加简洁

var map = function * (arr,fn){
    for(i in arr)
        yield fn(arr[i])

}
let newarr = map(arr,x=>++x)
/*
箭头函数:如果一个函数没有参数使用();
如果只有一个参数,可以省略小括号
多个参数不能省略小括号,且使用逗号间隔
箭头函数返回值:如果函数体部分有多行,就需要使用{},如果有返回值使用return
如果只有一行语句,可以同时省略大括号和return,有return必有{}
*/


const sum = function (...args){ //[1,2,3]
    let result = 0
    console.log(arguments) //所有的参数,包括位置参数
    for (let x in args){  //[[1,2,3]]
        // console.log(args[x],'~~~~~~~~~`')
        result += args[x]
    }
    return result
}
// console.log(sum(...[1,2,3,4,5]))
// console.log(100+[1,2,3,4]) //1001,2,3,4

const rvalue = (x,y) => {return x,y}
console.log(rvalue(5,6))
/*
表达式的值
赋值表达式的值:等号右边的值
逗号表达式的值:最后一个表达式的值
*/

猜你喜欢

转载自www.cnblogs.com/harden13/p/9262957.html