Js高级函数高级应用

一、函数的定义方式

1、函数声明

function fn1(x, y) {
            console.log(x + y);
        }

2、函数表达式

 var fn2 = function (x, y) {
            console.log(arguments[0] + arguments[1]);
        }

3、内置的构造函数(了解)

var fn3 = new Function('x', 'y', 'return x+y')

二、函数的调用方式

function result(x) {
            console.log(x);
            x()
        }
        result(function () { console.log('我是函数又是参数'); })
        // result([10,20])
        // var x = 10;
        // var x = 'haha'
        // var x = false
        // var x = [10, 20]
        // var x = function () { console.log('我是函数又是参数'); }

1、函数名( )

 fn1(1, 2)
 fn2(10, 20)
 var fn = fn3(1, 2)
 console.log(fn);

2、自调用

(function () {
  console.log('我是匿名函数');
})()
//我是匿名函数
var demo = function () {
  console.log('我是函数表达式');
}()
//我是函数表达式

3、call( ) apply( )

fn1.call(window, 1, 2)
fn1.apply(window, [10, 20])

4、在对象中的函数调用

  var obj = {
            name: 'obj',
            getName: function () {
                console.log(this.name);
            }
        }
        obj.getName()

5、在数组中的函数调用

       var arr = [
            10,
            'haha',
            true,
            null,
            undefined,
            [],
            {
                x: 1
            },
            function () {
                console.log(this);

                //在数组函数中,this指向当前数组

            }
        ]
        console.log(arr[1]);
        arr[7]()

数组函数中,this指向当前数组

6、函数作为参数的调用

  function result(x) {
            console.log(x);
            x()
        }
        result(function () { console.log('我是函数又是参数'); })
        // result([10,20])
        // var x = 10;
        // var x = 'haha'
        // var x = false
        // var x = [10, 20]
        // var x = function () { console.log('我是函数又是参数'); }

7、函数作为返回值的调用

 function result1(x) {
            return x
            
        }
        result1(function () { console.log('我是函数又是参数'); })()
        // var x = 10;
        // var x = 'haha'
        // var x = false
        // var x = [10, 20]
        // var x = function () { console.log('我是函数又是参数'); }

三、闭包

全局作用域:在全局声明的变量==>在任何作用域都有效::在浏览器打开时创建,在浏览器关闭时销毁

局部作用域:在局部中声明的变量(函数)==>在当前作用域有效::在函数调用时创建,函数调用完成后销毁

闭包:定义在一个函数内部的函数
闭包的本质:让父函数作用域成为永恒作用域

闭包的作用:

1、可以访问父函数中的变量

2、可以锁住父函数中的变量

闭包的作用:

1、可以访问父函数中的变量

2、可以锁住父函数中的变量
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值