typeof 运算符是否连续显示为一个变量分配的不同数据类型?

Does the typeof operator continuously show different data types assigned that changed for one variable?

我目前正在为要声明的变量摆弄 typeof 运算符。我在 chrome 开发人员中所做的是创建一个声明多个变量的语句,就像这样。

var x, y, z;

然后,我决定像这样为语句中的每个变量赋值。

var x = 7;
var y = 100;
var z = x + y;

当然这是一个算术表达式,所以每个变量的全部内容,一旦使用 typeof 运算符,就会显示一个表示数字的字符串。

现在我决定偷懒来展示 Javascript 的怪癖并抓住了这个。

我决定像这样将每个变量更改为未定义。

var x;

当我这样做时,我决定使用 typeof 运算符。出来的东西让我大吃一惊。

typeof (x);

字符串仍作为数字返回。

我的问题是,在上面的示例中具体发生了什么,它一直向我显示来自 typeof 运算符的数字数据类型,而实际上它实际上是未定义的?

在你的例子中,你说;

I decided to just change each variable to undefined like this.

var x;

然而,这实际上并没有将 x 设置为未定义,对于大多数实际用途来说,它实际上并没有做任何事情。

x 仍将计算为您之前分配给它的值 (7)。

如果您将 x 设置为未定义 (x = undefined),则 typeof 将正确反映它的新类型 (typeof x = "undefined")。

var x=7;
var x;

这不会重新声明变量。变量不能真正被重新声明。 如果您想将变量更改为未定义,请执行以下操作:

var x=6;
x=undefined;
alert(typeof x);

或者您可能想删除它:

var context={x:6};
delete context.x;
alert(typeof context.x);

但是,这在最高 (window) 范围内不起作用。

变量只创建一次,所以下次只能重复使用。

var x = 1;
...
x = 2;
...
x = undefined;

如果你两次创建相同的变量,计算机将读取有数据的变量。

var x = 1;
var x = 2;//this
...
var y = 1;//this
var y;