关于js预编译中变量提升和函数提升中的例子

声明的全局变量从上至下,上面打印不了下面的变量;
js预编译:即变量提升,var a = 0; 实际代码顺序是 var a; a = 0;
其中var a;在js的最上面;

a = 5; //全局变量,a = 5 下面的代码会获取a=5的值,并且可以打印;
function fn1(){ var a = 10; console.log(a); } //这里打印10,就近原则;

function fn2(){ b = 10; console.log(a); } //这里打印5,全局变量 a => fn2()函数可以使用;
fn2(); => 调用后下面写的内容可以访问函数中 b = 10;

函数调用:为什么能把写在最下方的函数,直接在js上面调用;
也是由于js预编译,函数提升在js上方;
【注】预编译中变量(var)在函数()function的上方;

【例子】
// 代码顺序
console.log(b);
var b = 2; // var b;变量提升
function b(){console.log(1)};// 函数提升
console.log(b);
b();

// js预编译,实际执行顺序;
var b;
function b(){conso.log(1)};
console.log(b); // f b() { console.log(1) }
b = 2;
console.log(b); // 2
b(); // b is not a function

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值