JavaScript基础-函数

一、函数的创建

  • 使用函数声明形式创建的函数 function 函数(){},会在代码执行前被创建。
 <script>
      fun();
      function fun() {
        console.log("我可以提前执行");
      }
    </script>
  • 使用函数表达式创建的函数,不会声明提前,不能在声明前调用
<script>
  var fun = function(){
    console.log("我不可以提前执行");
  }
  fun();
</script>og(fun());//输出结果是5

二、匿名函数(立即执行函数)

1:无参匿名函数

  (function () {
     console.log("我是一个无参匿名函数");
   })();

2: 含参匿名函数

<script>
  (function (a , b) {
    console.log(a + b);
  })(2 , 3);
</script>

三、工厂方法创建对象(利用函数创建对象)

    <script>
      function creatPerson(name, age, gender) {
        var obj = new Object();
        obj.name = name;
        obj.age = age;
        obj.geder = gender;
        obj.sayName = function () {
          alert(name);
        }
        return obj;
      }
      var obj1 = creatPerson("孙悟空","28","男");
      var obj2 = creatPerson("猪八戒","30","男");
      obj2.sayName();
      obj1.sayName();
    </script>

四、函数的call()、apply()、bind()方法

  • 用来重定义this 这个对象的!
<script>
  function fun() {
    alert("名字:" + this.name + "年龄:" + this.objAge );
  }
  var obj = {
    name: "zhang",
    objAge: 18
  }
  fun.call(obj);//名字:zhang年龄:18
  fun.apply(obj);//名字:zhang年龄:18
  fun.bind(obj)();//名字:zhang年龄:18
</script>

以上出了 bind 方法后面多了个 () 外 ,结果返回都一致!

由此得出结论,bind 返回的是一个新的函数,你必须调用它才会被执行。

  • call 、bind 、 apply 传参情况下
<script>
  function fun(place, hoby) {
    console.log("名字:" + this.name + "年龄:" + this.objAge , "出生地:" + place + "爱好" + hoby );
  }
  var obj = {
    name: "zhang",
    objAge: 18
  }
  fun.call(obj, '中国', '篮球');
  fun.apply(obj,['美国','乒乓球']);
  fun.bind(obj,['美国','乒乓球'])();
</script>

apply 和 call 传参方式不同,call()是直接传入参数,apply、bind是用传入数组的方式传入,bind的返回值是函数,在fun()函数中,this变量和传入的实参用逗号分开

五、arguments()函数

  • 是一个类数组对象,通过索引来操作数据,也可以获取长度
    arguments[0] 表示第一个实参
    arguments.length 表示实参的个数
  • 属性 callee
    这个属性对应一个函数对象,就是当前正在指向函数的对象

六、箭头函数

  • 书写方式:其实就是在普通函数的基础上稍加修改得到的
    如:
普通函数:
    <script>
      const   doubleValue = function (value) {
        return value * 2;
      }
      console.log(doubleValue(3));
    </script>
箭头函数:
   <script>
      const   doubleValue =  (value) => {简单的很,去掉function 并在参数的后面加上个胖箭头 => 就搞定。想想看,箭头其实就是代表(返回)的意思 
        return value * 2;
      }
      console.log(doubleValue(3));
    </script>
      
简化箭头函数:
 - 可以把参数的括号去掉, 甚至可以把花括号和return也去掉 如:
    <script>
      const   doubleValue =  value =>  value * 2;
      console.log(doubleValue(3));
    </script>
输出的结果均是: 6

注意:this

  • 函数体内的this对象,就是定义时所在的对象,而不是使用时所在的对象。
    在这里插入图片描述
发布了23 篇原创文章 · 获赞 4 · 访问量 606

猜你喜欢

转载自blog.csdn.net/weixin_43331769/article/details/103800780