前言
这个问题可能会让一些小白同学产生困惑,认为它们都表示同一个意思,但它们有着本质上的区别
undefined
表示声明了一个变量,但还未赋值,比如 var a;
function a() { var a; console.log(a); } a();
如果是下面这样,a依然会打印出undefined
function a() { console.log(a); var a = 1; } a();
因为变量提升,上面代码在编译后,实际是下面这样
function a() {
var a; console.log(a); a = 1; } a();
x is not defined
使用了未定义,也就是没有声明的变量,如下所示,在全局作用域都没有声明b变量
function a() { var a = 1; } console.log(b); a();
如果在函数内部未使用var或let进行变量声明,变量会自动变为全局变量
function a() { a = 1; } a(); console.log(a);
上面代码打印a为1,因为a已变为全局变量,实际代码如下
var a;
function a() { a = 1; } a(); console.log(a);
有需要的朋友可以领取支付宝到店红包,能省一点是一点