函数、预解析、参数、参数列表、抛出异常、捕获异常

函数

命名函数

匿名函数

构造函数

纯函数

预解析

关键字var和function开头的语句块提前进行处理

  • 处理过程:当变量和函数的声明处在作用域比较靠后的位置的时候,变量和函数的声明会被提升到作用域的开头。

解释代码和执行代码

  • 因为是在所有代码执行之前进行解释,所以叫做 预解析(预解释)
  • 需要解释的内容有两个
    • var 关键字
      • 在内存中先声明有一个变量名
      • 会把 var 关键字声明的变量进行提前说明, 但是不进行赋值
    • 声明式函数
      • 在内存中先声明有一个变量名是函数名,并且这个名字代表的内容是一个函数
      • 也就是会把函数名进行提前声明, 并且赋值为一个函数
  • 注意点
    • 赋值式函数 var fn=function(){} 按照var的规则进行解析
    • 在预解析阶段如果变量名和函数名重名了,最终的解析结果是函数为准,也就是函数的优先级高于变量名
    • 在if语句中,不管条件是否成立,里面的代码都会进行预解析
    • return后面的代码虽然不执行,但是会进行预解析
  • 结论:

通过预解析,我们知道函数名不要和变量名重名

声明式函数可以先调用,尽量不要先调用/尽量使用赋值式函数来定义

预解析重名情况

多个预解析存在情况

按照这个顺序预解析

1、 匿名函数的名称变量

2、 实参变量

3、函数内 function定义的命名函数

4、var 定义并且赋值的变量

预解析特殊情况

参数


arguments参数列表

arguments可以调用函数

ES6严格模式下面两个方法将会被禁用,调用时报错

arguments.callee  指向当前函数 当函数是匿名函数时,如果需要再次调用可以使用这个方法

函数.caller 指向的是当前函数被执行的上下文环境函数

抛出异常

捕获异常

即使出现错误也可以继续执行

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值