2021-05-10

     JavaScript函数

1: JavaScript函数简介

  1. 函数是由事件驱动的或者当它被调用时执行的可重复使用的代码块。
  2. 函数function

A.函数也是一个对象

      B.函数中可以封装一些功能(代码),在需要的使用可以执行这些功能(代码)

      C.函数中可以保存一些代码在需要的时候调用

检查一个函数对象时  使用typeof,会返回function

实例:

 

 

2: JavaScript函数语法

函数就是包裹在花括号中的代码块,前面使用了关键词 function:

 

当调用该函数时,会执行函数内的代码。

可以在某事件发生时直接调用函数(比如当用户点击按钮时),并且可由 JavaScript 在任何位置进行调用。

提示:JavaScript 对大小写敏感。关键词 function 必须是小写的,并且必须以与函数名称相同的大小写来调用函数。

>:创建函数

  • 使用函数声明创建一个函数
  • 使用函数表达式创建一个函数/匿名函数
  • 使用构造函数创建一个函数对象
  1. 每个函数都是Function 类型的实例,而 Function 也有属性和方法,跟其他引用类型一样。因为函数是对象,所以函数名就是 指向函数对象的指针,而且不一定与函数本身紧密绑定。函数通常以函数声明的方式定义,

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

说明:[形参1,形参2,...,形参N]这里的 [] 表示可以使用参数也可以不使用参数

        函数的调用:函数名([实参1,实参2,...]);

比如:

 

注意函数定义最后没有加分号

  1. 另一种定义函数的语法是函数表达式。函数表达式与函数声明几乎是等价的

    

这里,代码定义了一个变量 fun3并将其初始化为一个函数。注意 function 关键字后面没有名称, 因为不需要。这个函数可以通过变量 fun3 来引用。

注意这里的函数末尾是有分号的,与任何变量初始化语句一样

  1. 还有一种定义函数的方式与函数表达式很像,叫作“箭头函数”(arrow function),如下所示:

 

不能用作构造函数。

  1. 最后一种定义函数的方式是使用 Function 构造函数。这个构造函数接收任意多个字符串参数,最 后一个参数始终会被当成函数体,而之前的参数都是新函数的参数。调用函数:语法 函数对象();

来看下面的例子:

我们不推荐使用这种语法来定义函数,因为这段代码会被解释两次:第一次是将它当作常规 ECMAScript 代码,第二次是解释传给构造函数的字符串。这显然会影响性能。不过,把函数想象为对 象,把函数名想象为指针是很重要的。而上面这种语法很好地诠释了这些概念。

 

注意:函数声明与函数表达式区别:

  1. JavaScript 引擎在任何代码执行之前,会先读取函数声明,并在执行上下文中 生成函数定义,这个 过程叫作函数声明提升。而函数表达式必须等到代码执行到它那一行,才会在执行上下文中生成函数定义,如果把前面代码中的函数声明改为等价的函数表达式,那么执行的时候就会出错。
  2. 函数声明要求写出函数名称,而函数表达式并不需要。没 有名称的函数表达式也被称为匿名函数

>:调用带参数的函数

在调用函数时,可以向其传递值,这些值被称为参数。这些参数可以在函数中使用。

  1. 可以发送任意多的参数,由逗号 (,) 分隔:

 

  1. 声明函数时,请把参数作为变量来声明:

实例:

 

注意:

  1. 调用函数时解析器不会检查实参的类型,所以要注意,是否有可能会接收到非法的参数,如果有可能则需要对参数进行类型的检查
  2. 调用函数时,解析器也不会对检查实参的数量,多余的参数将不会被赋值,如果实参少于形参的数据,则没有对应实参的形参将是undefined

>:Javascript函数的返回值与立即执行函数

1: JavaScript函数的返回值

      有时,我们会希望函数将值返回调用它的地方,可以在函数的()中来指定一个或多个形参(形式参数)

可以通过return 来返回函数的返回值

语法:return 值;

return 后面值将会作为函数的执行结果返回,

可以定义一个变量来接收函数的返回值在使用 return 语句时,函数会停止执行,并返回指定的值,如果return语句后不跟任何值,就相当于返回一个undefined。

语法:

 

实例:计算两个数字的乘积,并返回结果:

 

2立即执行函数

函数定义完,立即被调用,这种函数叫做立即执行函数,立即执行函数往往只会执行一次

 

3:JavaScript函数的方法

call()与apply()

   - 这两个方法都是函数对象的方法,需要通过函数对象来调用

   - 当对函数调用call()和apply()都会去调用函数执行

      - 在调用call()与apply()可以将一个对象指定为第一个参数        此时这个对象将会成为函数执行时的this

- call()方法可以将实参在对象之后依次传递

  - apply() 方法需要将实参封装到一个数组中统一传递

附加:

this的总结:

    1.以函数的形式调用时,this始终都是window对象

    2.以方法的形式调用时,this就是调用方法的对象

    3.以构造方法的形式调用时,this是新创建的那个对象

    4.使用call与apply调用时,this是指定的那个对象

 

 

 

 

 

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值