JS中创建函数的几种方式

2019-12-09  本文已影响0人  仙姑本姑

1.使用 "函数声明" 创建函数
函数声明具有函数声明提升的特点,将函数声明提升到作用域顶端,意思是在执行代码之前会先读取函数声明,也就是说可以把函数声明放在函数调用的后面。
语法:

        *         function 函数名([形参1,形参2...形参N]){
        *             语句...
        *         }

举例:

function sum1(num1,num2){
   return num1+num2;
}
sum1(10,20);

2.使用 "函数表达式" 来创建一个函数
语法:

var 函数名  = function([形参1,形参2...形参N]){
        *      语句....
        *  }

可分为命名函数表达式匿名函数表达式两种

           // 1.命名函数表达式
           var testA=function abc(){
                      console.log(aaa);
                    }
        // 2.匿名函数表达式  --最常用简称函数表达式
            var testB=function(){
                      console.log(bbb);
                       }

函数表达式与函数声明最明显的区别是它不具有变量提升属性,如使用函数声明时,将函数调用放在前面:

test();//弹出hello,因为函数声明提升,函数调用之前,已经读取了该函数完成了声明
 
            function test(){
                alert("hello");
            }

而如果在函数变量式中:

 test();//报错:Uncaught ReferenceError: test is not defined
 
            //在函数调用时,作用域中还未读取该函数的定义
            //作用域读取函数表达式是按照代码顺序读取
            var test = function(){
                alert("hello");
            }
 
            test();//弹出hello

3.使用 "构造函数"

使用同一个构造函数创建的对象,我们称为一类对象,也将一个构造函数称为一个类。将通过一个构造函数创建的对象,称为是该类的实例
语法:

var 对象名{
  属性名 1:属性值;
  属性名 2:属性值;
....
函数名 1:function(形参...)
  {函数体 1},
函数名 2:function(形参...)
  {函数体 2},
.....
}

举例:

var zjl = {
  name:"周杰伦”,
  gender:"male",
  setAge:function(age){
  this curage=age;
  }
};

this关键字代表zjl这个对象,this.curage就是把形参的值赋给zjl这个对象的courage属性,如果用同样的方法给属性name和gender赋值,赋值后name和gender的初始值就会被覆盖。如果不加this,curage就不是对象zjl的属性了,而是一个全局变量,如果是var courage,那它就是setAge里的局部变量,不再是zjl的属性了,加了this关键字的方法和属性叫做公有方法和属性

上一篇 下一篇

猜你喜欢

热点阅读