对象&&函数

<!DOCTYPE html>
<html lang="en">
  <head>
    <meta charset="UTF-8" />
    <meta name="viewport" content="width=device-width, initial-scale=1.0" />
    <title>对象字面量</title>
  </head>
  <body>
    <script>
      // 使用对象字面量创建对象 可以在创建对象的时候 直接指定对象的属性
      // 语法:
      // {属性名:属性值,属性名:属性值}

      // =============================================================================
      // 函数 也是一个对象
      // 函数中可以封装一些功能(代码) 在需要时可以执行这些功能(代码)
      // 函数中可以保存一些代码再需要的时候调用

      // 创建一个函数对象 开发中一般不使用构造函数来创建函数 构造函数创建函数 只是想让你知道 函数也是一个对象 里面可以放可执行的代码
      var fun = new Function('console.log("hello,这是我的第一个函数")')
      console.log(typeof fun) //function
      console.log(fun)
      // 封装到函数中的代码 不会立即执行 函数中的代码会在函数调用的时候执行 当调用函数时 函数中封装的代码会按照顺序执行

      // 开发中用的多的是使用函数声明来创建一个函数
      //语法:
      //    function 函数名([形参1,形参2,形参3,.....,形参N])
      function fn2() {
        console.log('开发中用的多的是使用函数声明来创建一个函数')
        alert('hahahhhahha')
        document.write('wuwuwuuwuwuwuwu')
      }
      console.log(fn2)
      // 调用fn2 来执行函数体内的语句
      fn2()

      // 第三种方式是使用函数表达式来创建一个函数 所谓的函数表达式 就是创建一个匿名函数 然后将这个匿名函数赋值给一个变量
      // var 函数名 = function(){}
      var fn3 = function () {}

      // =============================================================================
      //定义一个用来求和的函数
      // 可以在函数的()内来指定一个或多个形参(形式参数)
      // 声明形参就相当于在函数内部声明了对应的变量 只是声明 并没有赋值
      function sum(a, b) {
        console.log(a + b)
      }
      // 在调用函数时可以在()中指定实参(实际参数)
      // 实参将会赋值给函数中对应的形参
      sum(1, 2)

      // 调用函数时解析器不会检查实参的类型  也不会检查实参的数量
      // 如果实参的数量少于形参的数量,则没有对应实参的形参将是undefined
      // 例子
      function fn4(c, d) {
        console.log('c = ' + c) //123
        console.log('d = ' + d) //undefined
        console.log(c + d) //NaN
      }
      fn4(123)
      // =============================================================================
      // 声明一个函数 来求三个数的和
      // 可以使用return来设置函数的返回值
      // 语法:
      //  return 值
      function fn5(f, g, h) {
        // var d = f + g + h
        // return d
        // return后的值将会作为函数的执行结果返回 可以定义一个变量来接收该返回值
        return f + g + h
        // return//如果return语句后不跟任何值就相当于返回一个undefined
        // 如果函数中不写return,则也会返回undefined 除非return后面有返回正常的值
        //return后可以跟任意数据类型
        // 在函数中return后的语句都不会执行
        alert('在函数中return后的语句都不会执行')
      }
      // 变量res的值就是函数的执行结果
      // 函数返回什么 res的值就是什么
      var res = fn5(1, 2, 3)
      console.log('res = ' + res)
    </script>
  </body>
</html>