01递归

预编译

什么是预编译

定义:

预编译又称为预处理 , 在函数执行之前产生预编译。

预编译的影响:

1 声明的函数会被提升:函数有两种创建方式:
一种是声明式:

function fn(){}

一种是赋值式:

var fn = function(){}
  • 只有声明式函数会被提升,赋值式函数不会被提升

2 变量的声明提升:

  • 首先var a = 123;这个叫做变量的声明和赋值等价于:var a; a = 123;,系统首先会把变量声明var a;提升到最前面.
  • 这里要注意的是在js中函数的身份是非常高的,也就是说当声明式函数的函数名和一个变量名一样的时候,在预解析时这个名字是属于函数名的,比如:
console.log(a);//打印的结果是ƒ a() {}
var a;
function a(){}

举个栗子

//在代码执行之前,预编译发生,此时系统知道有一个叫 a的变量,
//又知道了一个加a的函数,但是因为函数的地位比较高,
//所以打印a结果就是函数a。
console.log(a);//f a(){}

var a = 10;     //当函数执行到这一步时,其实只执行了a=10
//这个代码,因为预编译的时候var a已经被执行了,所以此时a = 10

function a(){
}

console.log(a);//10
如有错误,请指正,本人为人谦虚,虚心接受,屡教不改!
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值