143节---------6月6日

函数

函数就是封装了一段可被重复调用执行的代码块。通过此代码可以实现大量代码的重复操作

函数在使用时分为两步:声明函数和调用函数

声明函数

function 函数名(){
    函数体;
}

调用函数

函数名()

调用函数的时候要注意加上小括号

函数的封装

就是把一个或者多个功能通过函数的方式封装起来,对外只提供一个简单的函数接口

简单理解就是:类似于将电脑配件整合组装到机箱中(类似于快递打包)

函数的参数

在声明函数括号中的参数为形参

在函数调用括号中的参数为实参


function 函数名(形参1,形参2…){
    函数体;
}

函数名(实参);

如果实参的个数比形参多,只取到形参的个数

如果实参个数小于形参,多余的形参定义为undefined,结果是NaN

函数的返回值return

让函数把值返回给调用者(谁点菜,就把菜返回给谁)

格式:

function 函数名(){
    return 需要返回的结果;
}
函数名();
  • 只要函数遇到return,就把后面的结果返回给函数的调用者,就是把函数名()变成return 后面的结果,即令函数名() = return
  • return还有终止函数的作用,遇到return,后面的语句就都不执行了
  • return只能返回一个值,如果用逗号隔开多个值,以最后一个为准
  • 如果没有return,则返回undefined

arguements的使用

当我们不确定有多少个参数传递的时候,可以用arguments来获取。

在JS中,arguments实际上是当前函数的一个内置对象。所有函数都内置了一个arguments对象,arguments对象中存储了传递所有实参。

function fn(){
    console.log(arguments);
}
fn(1,2,3);

结果是:arguments(3)[1,2,3]

arguments展示形式是一个伪数组,因此可以进行遍历。伪数组有以下特点:

  • 具有length属性
  • 按照索引方式存储数据
  • 不具有数组的push,pop等方法

函数的两种声明方式

利用函数关键字           function 函数名()

利用函数表达式           var 变量名 = function(){}        如var fun = function(){}

  • fun是变量名,不是函数名
  • 函数表达式的声明方式跟声明变量差不多,只不过变量里面存的是值,而函数表达式里存的是函数
  • 函数表达式也可以进行传递参数


作用域

一段程序代码中所用的名字(变量)并不是总是有效和可用的,而限定这个名字的可用性的代码范围就是这个名字的作用域。

  • 全局作用域:整个script标签,或者是一个单独的js文件
  • 局部作用域:在函数内部就是局部作用域,这个代码的名字只在函数内部其效果和作用

变量的作用域:

根据作用域的不同,把变量分为全局变量和局部变量

  • 全局变量:在全局作用域下的变量(如果在函数内部,没有声明直接赋值的也叫全局变量)
  • 局部变量:在局部作用域下的变量,后者在函数内部的变量就是局部变量

注意:全局变量只有浏览器关闭的时候才会销毁,比较占用内存资源;局部变量当程序执行完毕了就会销毁,比较节约资源

作用域链

  • 只要是代码,就至少有一个作用域
  • 写在函数内部的局部作用域
  • 如果函数中还有函数,那么在这个作用域中就又可以诞生一个作用域
  • 根据在内部函数可以访问外部函数变量的这种机制,用链式查找决定哪些数据能被内部函数访问,就成做作用域链
  • 采取的就近原则

预解析

JS代码是有浏览器中的JS解析器来执行的。JS解析器在运行JS代码的时候分为两步:预解析和代码执行。

  • 预解析:JS引擎会把JS里面所有的var还有function提升到当前作用域的最前面
  • 代码执行:按照代码书写的顺序从上往下执行

预解析

分为变量预解析(变量提升)和函数预解析(函数提升)

  • 变量预解析:就是把所有的变量声明提升到当前的作用域最前面,不提升赋值操作
  • 函数预解析:就是把所有的函数声明提升到当前作用域的最前面,不调用函数

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值