zoukankan      html  css  js  c++  java
  • 函数

    <!--
    1. 什么是函数?
      * 具有特定功能的n条语句的封装体
      * 只有函数是可执行的, 其它类型的数据是不可执行的
      * 函数也是对象
    2. 为什么要用函数?
      * 提高代码复用
      * 便于阅读和交流
    3. 如何定义函数?
      * 函数声明
      * 表达式
    4. 如何调用(执行)函数?
      * test()
      * new test()
      * obj.test()
      * test.call/apply(obj)
    -->
    <script type="text/javascript">
    
      function f1 () { // 函数声明
        console.log('f1()')
      }
      var f2 = function () { // 表达式
        console.log('f2()')
      }
    
      /*
      编写程序实现以下功能需求:
        1. 根据年龄输出对应的信息
        2. 如果小于18, 输出: 未成年, 再等等!
        3. 如果大于60, 输出: 算了吧!
        4. 其它, 输出: 刚好!
      */
      function showInfo (age) {
        if(age<18) {
          console.log('未成年, 再等等!')
        } else if(age>60) {
          console.log('算了吧!')
        } else {
          console.log('刚好!')
        }
      }
      //调用
      showInfo(17)
      showInfo(22)
    
      /*
       函数也是对象
       */
      function fn() {
    
      }
      console.log(fn instanceof Object) // 是Object类型的实例
      console.log(fn.prototype) // 内部有属性
      console.log(fn.call) // 内部有方法
      fn.t1 = 'atguigu' // 可以添加属性
      fn.t2 = function () { // 可以添加方法
        console.log('t2() '+this.t1)
      }
      fn.t2()
    </script>

     回调函数

    <!DOCTYPE html>
    <html lang="en">
    <head>
      <meta charset="UTF-8">
      <title>05_回调函数</title>
    </head>
    <body>
    <button id="btn">测试点击事件</button>
    <!--
    1. 什么函数才是回调函数?
      * 你定义的
      * 你没有直接调用
      * 但最终它执行了(在特定条件或时刻)
    2. 常见的回调函数?
      * DOM事件函数
      * 定时器函数
    
      * ajax回调函数(后面学)
      * 生命周期回调函数(后面学)
    -->
    <script type="text/javascript">
    
      //1. DOM事件函数
      var btn = document.getElementById('btn')
      btn.onclick = function () {
        alert(this.innerHTML)
      }
    
      //2. 定时器函数
      setInterval(function () {
        alert('到点啦!')
      }, 2000)
    </script>
    
    </body>
    </html>

     IIEF

    <!--
    1. 理解
      * 全称: Immediately-Invoked Function Expression 立即调用函数表达式
      * 别名: 匿名函数自调用
    2. 作用
      * 隐藏内部实现
      * 不污染外部命名空间
    -->
    <script type="text/javascript">
      (function (i) {
        var a = 4
        function fn() {
          console.log('fn ', i+a)
        }
        fn()
      })(3)
    </script>

     函数中的this

    <!--
    1. this是什么?
      * 一个关键字, 一个内置的引用变量
      * 在函数中都可以直接使用this
      * this代表调用函数的当前对象
      * 在定义函数时, this还没有确定, 只有在执行时才动态确定(绑定)的
    2. 如何确定this的值?
      * test()
      * obj.test()
      * new test()
      * test.call(obj)
    前置知识:
      * 本质上任何函数在执行时都是通过某个对象调用的
    -->
    
    <script type="text/javascript">
      function Person(color) {
        console.log(this)
        this.color = color;
        this.getColor = function () {
          console.log(this)
          return this.color;
        };
        this.setColor = function (color) {
          console.log(this)
          this.color = color;
        };
      }
    
      Person("red"); //this是谁?
    
      var p = new Person("yello"); //this是谁?
    
      p.getColor(); //this是谁?
    
      var obj = {};
      p.setColor.call(obj, "black"); //this是谁?
    
      var test = p.setColor;
      test(); //this是谁?
    
      function fun1() {
        function fun2() {
          console.log(this);
        }
    
        fun2(); //this是谁?
      }
      fun1();
    </script>
  • 相关阅读:
    Go内建容器篇
    Go基础语法篇
    【区块链】比特币Merkle树
    【区块链】Fabric 术语
    Apache旗下项目
    【区块链】Fabric0.6 与1.0
    rc.local不起作用
    命令行模式启动VMWare虚拟机
    vsftpd 530 Login incorrect 根本原因和解决方案
    Oracle的undotbs01.dbf文件太大(占用大量磁盘空间)处理方法 ORA-01654 空间不足 ORA-01653
  • 原文地址:https://www.cnblogs.com/zzxuan/p/9158046.html
Copyright © 2011-2022 走看看