函数+回调函数+IIFE+函数作用域

210304

函数

  1. 什么是函数
    • 实现特定功能的n条语句的封装体
    • 只有函数是可以执行的,其他类型的数据不能执行
  2. 为什么使用函数
    • 提高代码复用
    • 便于阅读交流
  3. 如何定义函数
    • 函数声明
    • 表达式
    function fn1(){
        console.log('fn1()');
    }
    
    var fn2 = function(){
        console.log('fn2()');
    }
    
    fn1();
    fn2();
    
  4. 如何(调用)执行函数
    • test():直接调用
    • obj.test():通过对象调用
    • new test():new调用
    • test.call/apply(obj):临时让test成为obj的方法进行调用
    var obj = {}
    function say(){
        this.xxx = 'isdcjs';
        console.log("hello");
    }
    say.call(obj);  //hello  可以让一个函数成为指定任意对象的方法进行调用
    console.log(obj.xxx); //isdcjs
    

回调函数

  1. 什么函数是回调函数
    • 自己定义的
    • 不需要调用
    • 最终执行了
  2. 常见的回调函数
    • dom事件回调函数(onclick=function(){}与用户交互) ==>发生事件的dom元素
    • 定时器回调函数(setInterval、setTimeout) ==>window
    • ajax请求回调函数(与后台交互)
    • 生命周期回调函数

created on 21/03/04

IIFE(匿名函数自调用)

1、理解
  • 全称:Immediately-Invoked Function Expression
2、作用
  • 隐藏实现
  • 不会污染外部(全局)命名空间
  • 用它编写js模块
(function(){  //匿名函数自调用
    var a = 3;
    console.log(a + 3);
})()  //6
var a = 4;  //全局变量a
console.log(a); //4

;(function(){
   var a = 1;
    function test(){
        console.log(++a);
    }
    window.$ = function(){  //向外暴露一个全局函数
        return{
            test: test;
        }
    }
})()

$().test() //1、$是一个函数 2、$执行后返回的是一个对象   2

函数的作用域

  • 调用函数时创建函数的作用域,函数执行完毕,函数作用域销毁,没调用一次就会创建一个新的函数作用域。
  • 在函数作用域中可以访问到全局变量
var a = 10
function fn(){
   console.log(a)
}
fn() //10
  • 函数中,不适用var声明的变量都会成为全局变量
var b = 20
function fn(){
    b = 30
    console.log(b)
}
console.log(b) //20 未调用fn之前,b的值都是20,未重新赋值
fn() //30 调用fn,b重新赋值
console.log(b) //30 调用fn,b重新赋值
  • 定义形参就相当于在函数作用域中声明了变量
var c = 21
function fn(c){
    alert(c)
}
fn() //undefined 
/*
function fn(c){
    var c
    alert(c)
}
fn() //未传参,c的值就近原则var c,所以为undefined
*/
fn(c) //21
posted @ 2021-07-08 08:40  STRIVE-PHY  阅读(81)  评论(0)    收藏  举报