Js变量提升

JS拿到一段代码或一个函数的时候,会有两步主要操作,即解析与执行。

在解析阶段,JS会检查语法,并对函数进行预编译。所以当函数的代码有语法错误的时候,在函数执行前就会报错(SyntaxError)。

JavaScript 在执行任何代码段之前,将函数声明和变量放入内存中的优点之一是,这允许你可以在你的代码中使用一个函数和变量,在声明该函数和变量之前。(更好的容错性)

newFun(); //这里的newFun可以再newFun函数调用之前引用就是因为Js再编译阶段就将函数和变量放入了内存
function newFun () { //... }
num = 6;
num + 7;
var num;
/* 没有给出错误,只要声明了num */

变量申明变量初始化

var y; //变量申明
y = 10; // 变量初始化
var y; //变量声明
console.log(y); // 打印结果: underfined
y = function A () {} //变量初始化

JavaScript 仅提升声明,而不提升初始化。如果你先使用的变量,再声明并初始化它,变量的值将是 undefined。

var x = 1;                 // 声明 + 初始化 x
console.log(x + " " + y);  // '1 undefined'
var y = 2;                 // 声明 + 初始化 y

zai编译阶段进行变量提升,可以更早的计算处要分配给堆栈的空间,因为知道了定义了几个变量和函数。还可以再编译阶段纠正一些错误,提升性能。

转载于:https://my.oschina.net/u/4085373/blog/3027841

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值