08-函数对象零碎点

回顾

作用域:
  作用的范围
全局作用域:在函数外定义的变量,在页面的任何一个地方都可以使用
局部作用域: 在函数内定义的变量,只能在函数内使用

在函数中声明变量不加var 就是全局变量
作用域链:如果当前作用域没有,则向父级作用域查找,如果还没有,继续向父级作用域,一直找到全局作用域,如果还没有,报错

形参 是局部作用域

一旦进入作用域,就启动js解析器
 1:在作用域中寻找一些东西   var  function  形参
   //找到var后,将var后的变量名提取出来,并给他初始化一个值undefined
   //变量和函数同名,丢变量,保函数
   //当有多个scripte标签时,从上到下依次解析并执行第一个script标签,然后下一个,依次类推
   //在上面script标签中声明的东西,下面script标签中都可以使用
   //下面script标签中声明的东西,上面使用会报错
 
 2:逐行解读代码
    1:执行表达式
    2:函数调用
        一,预解析  var function 形参
        二,逐行解读代码
           1:执行表达式
           2:函数调用
           
           
           

arguments

function fn() {
        // arguments 接收调用函数时的所有实参
        console.log(arguments)
      }

      fn(12, 34, 5, 6, 78, 84, 4, 3, 2, 2, 12, 5)

匿名函数

 // 1. 将匿名函数赋值给一个变量

      // var fn = function () {
      //   alert('hello')
      // }
      // fn()
      // -------------------------------------------

      //2.将匿名函数绑定给一个事件
      // document.onclick = function () {
      //   alert(0)
      // }
      // -------------------------------------------
      // 3匿名函数自我执行
      // ;(function () {
      //   alert(123)
      // })()

      // ------------------------------------------------
      // 4匿名函数的返回值(将一个匿名函数的返回值赋值给一个变量)
      // var num = (function () {
      //   return 3
      // })()
      // alert(num)

      // --------------------------------------
      // 5 输出一个匿名函数的返回值
      // alert(
      //   (function () {
      //     return 'hello'
      //   })()
      // )

      // -----------------------------------
      // 6 给匿名函数传递参数
      var sum = (function (a, b) {
        return a + b
      })(3, 4)
      alert(sum)

递归

 // 递归:函数自己调用自己的过程
      // 本质 :实现了循环

      // 1~n之间所有数的和

      function fnSum(n) {
        // 结束条件
        if (n === 1) {
          return 1
        }
        return n + fnSum(n - 1)
      }

      // console.log(fnSum(100))

      // ----------------------------
      //  5的阶乘   n = 5

      function fnFac(n) {
        // 结束条件
        if (n === 1) {
          return 1
        }
        return n * fnFac(n - 1) //5*4*3*2*1
      }

      alert(fnFac(5))

对象

世界万物皆对象;

object,一切具有本质特征行为的事物

属性:事物的本质特征

方法: 事物的行为

一个鼠标
  属性(本质特征):大小   形状  颜色
  事物的行为: 干什么事情 --点击  选择
  
  
一个人
   属性(本质特征):姓名  年龄  身高  体重
   事物的行为: 跑步  唱歌 敲代码

一类具有共同的本质特征和行为的实物

类是对象的抽象化

对象是类的具体化

一、如何创建对象
/* 
 变量  只能存储一个值 
 对象   存储一个对象的所有信息   姓名,年龄,成绩.... 一条数据
*/


      // 创建对象
      //  1:字面量方式   {key:value,key:value}

      var obj = {
        name: '张三',
        age: 12,
        showName: function () {
          return this.name
        },
        showAge: function () {
          return this.age
        },
      }

      // new 构造函数----放在高级
二、如何访问对象中的属性和方法
 // 访问对象中的属性和方法

      var o = {
        name: 'lisi',
        age: 45,
        score: 100,
        showAge: function () {
          // this 就是o这个对象
          console.log(this.age)
        },
      }

      // 对象.属性
      // 对象['属性']
      // 对象.方法()
      // 对象['方法']()

      console.log(o.name)
      // 对象中的key值都是字符串类型
      console.log(o['name'])

      o.showAge()
      o['showAge']()
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值