关于变量提升的小小例子

我们首先来看一个例子:

 console.log(a);   // undefined
 var a = 'a';
 console.log(a);   // a

为什么会呈现undefined这种情况呢?代码从上往下看,变量a并未声明,而我们知道undefined的意思是变量已经声明,但并未赋值,由此来看,变量a是已声明但未赋值的状态,这是为什么呢?因为预编译,又称为预处理,它是做些代码文本的替换工作,是整个编译过程的最先做的工作,它会把所有声明提升到顶端。

所以,以上代码在执行过程中实际上是这样的:

var a;
console.log(a);  // undefined
a = 'a';
console.log(a);  // a

注意:变量声明的提升仅仅是声明提升了,赋值不会被提升。

再来看一个例子:

console.log(num);
num=100;
console.log(num);
var num;
console.log(num);

试试看写出Console.log(num);的结果吧。

上述代码在执行过程中实际上是这样的:

var num;
console.log(num);  //undefined
num=100;
console.log(num);  //100
console.log(num);  //100

你写对了吗?

来看最后一个例子:

console.log(num);
num=100;
console.log(num);

你认为这一例子的console.log(num);结果是什么呢?
由于变量num未声明也未赋值,所以第一个console.log(num);的结果是会报错:
console.log(num); //error。
那第二个console.log(num);呢?我们都知道程序一旦出现错误,将不会再继续执行,所以你做对了吗?

(此为第一篇博客,不足之处,多请海涵。❤)

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值