JS基础 #第六天

目录

一、创建函数

二、函数的参数

三、返回值

四、return

五、立即执行函数


一、创建函数

  • 封装到函数中的代码不会立即执行,会在函数调用的时候执行
  • 调用函数语法,函数对象()
  • 当调用函数时,函数中封装的代码会按照项序执行
  • 使用typeof检查一个函数对象时,会返回function

1.使用构造函数创建函数(了解)

      var fun = new Function(
      "console.log('创建函数');"
      
    );
    // 使用typeof检查一个函数对象时,会返回function
    console.log(typeof fun); // function 
    fun(); // 调用函数

2.使用函数声明创建函数

语法:

function 函数名([形参1, 形参2...形参n]) {

         语句

         ...

      }

    function fn() {
       console.log("哈哈哈");
       alert("嘟嘟嘟");
       document.write("创建函数");      
     }
     fn(); // 调用函数

3.使用函数表达式创建函数(匿名函数赋值给变量)

语法:

    var 函数名 = function([形参1, 形参2...形参n]) {

      语句

      ...

    }

    var fun1 = function() {
      console.log("匿名函数中封装的代码");
      
    };
    fun1(); // 调用

二、函数的参数

1.形参

  • 可以在函数的()中来指定一个或多个形参(形式参数)
  • 多个形参之间使用 , 隔开,声明形参就相当于在函数内部声明了对应的变量,但是并不赋值
    function sum(a, b) {
      console.log(a + b);
      
    }

2.实参

  • 在调用函数时,可以在()中指定实参(实际参数),实参将会赋值给函数中对应的形参
  • 调用函数时,解析器也不会检查实参的数量,多余实参不会被赋值
  • 如果实参的数量少于形参的数量,则没有对应实参的形参将是undefined
    function sum(a, b) { // 形参
      console.log(a + b);
      
    }
    // 实参
    // 在调用函数时,可以在()中指定实参(实际参数),实参将会赋值给函数中对应的形参
    sum(3, 5); // 8
    sum(34, 354); // 388

    
    // 调用函数时,解析器也不会检查实参的数量,多余实参不会被赋值
    sum(2, 3, 4); // 5
    // 如果实参的数量少于形参的数量,则没有对应实参的形参将是undefined
    sum(5); // NaN

注:

  • 调用函数时解析器不会检查实参的类型,所以要注意,是否有可能会接收到非法的参数,如果有可能则需要对参数进行类型的检查
  • 函数的实参可以是任意的数据类型

三、返回值

  • 可以使用return来设置函数的返回值, return后的值将会作为函数的执行结果返回,可以定义一个变量来接收结果
  •  在函数中,return后面的值都不会执行
  •  如果return语句后不跟任何值就返回一个undefined,
  • 如果函数中不写return,则也会返回undefined
  • return 只能在函数内部使用。

  • return后可以跟任意类型的值  如:return "hello"
    function sum(a, b, c) {
      var d = a + b + c;
      return d;     
      // alert("弹出结果") 不会执行
    }

    // 调用函数
    // 变量result的值就是函数的执行结果
    var result = sum(1, 2, 3);
    console.log(result);

例:定义一个函数,判断一个数字是否是偶数,如果是返回true,否则返回false

    function oushu(num) {
      // if (num % 2 == 0) {
      //   return true;
      // } else {
      //   return false;
      // }
      return num % 2 == 0;
    }
    var re = oushu(3);
    console.log(re); // false

实参可以是一个对象或函数,例:创建函数,可以在控制台中输出一个人的信息,可以输出人的name age gender address

    function message(obj) {
      console.log("我是" + obj.name + ",今年" + obj.age + "岁," + "性别" + obj.gender + ",我住在" + obj.address); 
    }
    var obj = {
      name: "koko",
      age: 12,
      gender: "男",
      address: "成都"
    }
    message(obj); // 我是koko,今年12岁,性别男,我住在成都

    // 将函数作为一个参数
    function fun(a) {
      a(obj); 
    }
    fun(message); // 我是koko,今年12岁,性别男,我住在成都

比较area()和area的区别: (重点)

area():

  • 调用函数

  • 相当于使用的函数的返回值

area:

  • 函数对象
  • 相当于直接使用函数对象

四、return

1.return 结束后面的所有语句

    function fn() {
      alert("你好");
      for (var i = 0; i< 5; i++) {
        console.log(i);
        if (i == 3) {
          return; // 直接结束整个函数
        }
      }
      alert("你好吗"); // 不会被执行
    }

2.返回值可以是任意的数据类型

    function fn1() {
      return 11;
    }
    var a = fn1(); // 将fn1的返回值赋值给a
    console.log(a); // 11

(1)返回值也可以是对象

    function fn1() {
      // var obj = {name: "我是一只大象"}
      // return obj;
      return {name: "我是一只大象"};
    }
    var a = fn1(); // 将fn1的返回值赋值给a
    console.log("a = " + a.name); // a = 我是一只大象

(2)返回值也可以是函数

    function fn2() {
      function fn3() {
        alert("大象鼻子");
      }
      return fn3;  // 返回的是fn3这个函数 (重点)
      // return fn3(); 返回的是fn3这个函数的返回值 (重点)
    }
    a = fn2(); // 将fn2的返回值赋值给a
    a();  // 返回值为 大象鼻子 可以直接写为fn2()();
    console.log(a); // 返回fn3时,值为function; 返回fn3()时,值为undefined,因为fn3里面没有返回值

五、立即执行函数

立即执行函数: 函数定义完,立即被调用. 立即执行函数往往只会执行一次

    (function(a, b) {  // 形参
      console.log(a + b);
    })(3, 4)  // 7  传递实参

方法:直接在匿名函数外面包裹一层小括号,然后后面再加上一个小括号用于传递实参

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值