学习第二天..

30 阅读2分钟

作用域

1.es5之前没有快级作用域(原因是var定义的变量都是全局的)

2.函数内部有自己的作用域,外部无法访问函数内部的作用域,但函数a内部如果再次定义函数b,b函数是可以使用a函数的变量的

3.变量有局部变量,外部变量,全局变量

局部变量:定义在函数内部,只限函数内部调用

外部变量:假如函数外部有变量,函数内部去访问函数外部的变量

全局变量:定义在script中,最上层的变量,全局变量会加到window对象中,可以在window对象找到,对任何函数都可见

函数和函数表达式

函数表达式和函数的区别:

1.语法不同

2.函数表达式必须先声明再调用,函数却可以在声明之前调用(原因为js的编译,会在调用之前先编译全局函数)

函数表达式调用: var test = function(){ console.log('测试') }

函数作为头等公民非常的灵活:

1.函数可以传值给变量

例如: let foo = function(){ console.log("sss")}

2.函数可以在变量中来回传递

例如: let foo = function(){ console.log("sss")} let foo2=foo

3.函数可以当做参数传递

例如 let foo = function(){ console.log("sss")} function x(foo){ foo()}

4.函数可以当做返回值

例如 let foo = function(){ console.log("sss")} function x(foo){ return foo() }

5.函数可以放到数据结构中

例如 let test = { a:'',function test(){}}

函数回调

4中其实可以认为是一个函数的回调,函数回调其实就是将一个函数传入并在此函数中调用,就被称之为函数的回调,可以用作函数的异步处理

例如:

foo("url",function(res){
    console.log(res)
   })
   function foo(url,fn){
    console.log("函数回调第一个入参"+url)
    let list = ["横说竖说"]
    fn(list)
   }

上面代码中fn,可以被称之为一个匿名函数

如上,存在传入一个函数或者多个函数且返回的被称为高阶函数

今天先到这.......