我们首先来看一个例子:
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);呢?我们都知道程序一旦出现错误,将不会再继续执行,所以你做对了吗?
(此为第一篇博客,不足之处,多请海涵。❤)