美文网首页
27 JS函数

27 JS函数

作者: 卢卢2020 | 来源:发表于2021-01-21 11:17 被阅读0次

    四种方式定义函数    

        1 具名函数

    function 函数名(形参1,形参2){

    语句

    return 返回值

    }

        2 匿名函数

    var a = function(x,y){

    return x+y

    }


        3 箭头函数

    let f1 = x => x*x

    let f2=(x,y)=> x+y // 两个形参时圆括号不能省

    let f3 = (x,y) => {return x+y}  //有花括号时必须要加上return

    如果一个函数返回值是一个对象 那么直接用let f4 = x => {name:x} 会报错 有两种方法可以解决 一种是({name:x})用圆括号把{name:x}包起来 第二种是{return {name:x}} 加一个大括号 但是{}里面必须要加return 不然它的值为undefined

    let f4 = x => ({name:x})    //

    f4('lulu') //lulu   

    let f5 =x =>{return {name:x}}  

    f5('liwu')//liwu

        4 构造函数

    let f=new Function('x','y','return x+y') 

    基本没人用,但是能让你知道函数是谁构造的

    所有函数都是Function 构造出来的

    包括Object、 Array 、Function 也是

    arguments和this

    function fn(){

    console.log(arguments)   

    console.log(this)

    }

    fn(1,2)

        1 如何传arguments

    调用fn即可传arguments

    fn(1,2,3) 那么arguments就是【1,2,3】伪数组

        2 如何传this

    目前可以用 fn.call(xxx,1,2,3) 传this和arguments

    而且xxx会被自动转化成对象

    this的两种使用方法 

        1 隐式传递

     fn(1,2) //等价于fn.call(undefined,1,2)

    obj.child.fn(1) //等价于obj.child.fn.call(obj.child,1) 

         2 显示传递

     fn.call(undefined,1,2)

    fn.apply(undefined,[1,2])

    箭头函数

        1 里面的this就是外面的this

    console.log(this) //window

    let fn=()=>{console.log(this)}

    fn() // 它的this也是指window

        2 就算你加call 都没有

    fn.call({name:'lulu'}) //window    .call里面指定了 但是打印出来的this还是window

    相关文章

      网友评论

          本文标题:27 JS函数

          本文链接:https://www.haomeiwen.com/subject/bogkzktx.html