细说JavaScript中的预解析

概述

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

  1. 我们js引擎运行js 分为两步: 预解析和 代码执行
    (1) 预解析:js引擎会把js里面所有的 var 还有 function提升到当前作用域的最前面
    (2) 代码执行:按照代码书写的顺序从上往下执行
  2. 预解析分为变量预解析(变量提升)和函数预解析(函数提升)
    (1)变量提升:就是把所有的变量声明提升到当前的作用域最前面,不提升赋值操作
    (2)函数提升:就是把所有的函数声明提升到当前作用域的最前面,不调用函数
  3. 函数表达式调用必须写在函数表达式的下面
案例

1、结果是多少?

//案例1
var num = 10;
fun();

function fun (){
	console.log(num);
	var num = 20;
}
//相当于执行了以下的操作
var num;
function fun (){
	var num;
	console.log(num);
	num = 20;
}
num = 10;
fun();

2、结果是多少?

var num = 10;
function fun (){
	console.log(num);
	var num = 20;
	console.log(num);
}
fun();
//相当于以下代码
var num;
function fun (){
      var num 
	console.log(num);
	 num = 20;
	console.log(num);
}
num = 10;
fun();

3、结果是多少?

f1();
console.log(c);
console.log(b);
console.log(a);
function f1 (){
	var a=b=c=9;
console.log(a);
console.log(b);
console.log(c);
}

//相当于以下代码
function f1 (){
	var a;
    a = b = c = 9;
	//相当于 var a=9; b=9; c=9;    b和c直接赋值前面 没有var声明 当全局变量看
	
console.log(a); //9
console.log(b); //9
console.log(c); //9
}
f1();
console.log(c); //9
console.log(b); //9
console.log(a); //打印报错 函数中的 var a 为局部变量无法打印
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值