typeof typeof x 返回的是字符串而不是对象,因为 null 的类型是对象。

3

我是js的新手,正在学习js,请问为什么typeof typeof x返回string?以下是代码片段,如果我理解了这个简单的概念,它将帮助我更多:

var x=null;
console.log(typeof typeof x);
3个回答

8

typeof x 返回变量 x 的类型的字符串表示。因此,自然而然地,typeof typeof x 是字符串。

来自 MDN

typeof 运算符返回一个字符串,指示未求值操作数的类型。

如果你希望它返回 "object",你需要将它改为只有一个 'typeof'。

var x=null;
console.log(typeof x);

2
换句话说,使用 typeof typeof 变量 没有意义。 - charlietfl
@jakeehoffmann 你是在说 typeof typeof x 是一个未评估的操作数吗? - user7805277
我不知道你的意思,所以不行。在任何你想用的东西上使用 typeof。结果将是一个字符串,显示你放入其中的任何内容的类型。因此,typeof (typeof anything) 等同于 typeof "somestring",后者当然是 "string"。 - jakeehoffmann

1

看看这个简单的例子,它会帮助你消除疑虑:

var a = null;

console.log(typeof a, typeof a === 'object')

var b = function (){};

console.log(typeof b, typeof b === 'function')

var c = "";

console.log(typeof c, typeof c === 'string')

原因: typeof 返回一个字符串,表示所提供值的类型。当你检查 typeof 返回的值时,它将以字符串形式呈现,例如:
'object', 'function', 'string' etc.

你正在检查 typeof "object",这就是为什么返回了 string

对象的类型应该是对象,但为什么它返回字符串呢?你能在回答中使用我的示例吗?这很令人困惑 :( - user7805277
2
typeof object 将会是 object,但是 typeof "object" 将会是 string。请注意 " " 包围的 object,这就是区别所在。当你使用 typeof object 时,它将再次返回 object,如果你对其使用 typeof,那么它就像是 typeof "object",这就是为什么它返回了 string :) - Mayank Shukla
为什么它会进入 "",因为我们没有给引号对吧? - user7805277
1
typeof 将以该格式返回我,检查我在上面的例子中使用的比较,该比较返回 true,因为 typeof 返回 'function' 或 'string' 或 'object' 等等 :) - Mayank Shukla

0

使用typeof运算符来查找JavaScript变量的数据类型 // 这个特性从JavaScript开始就存在 typeof null === 'object';

var x=null;
var x=(typeof x);
it returns "object";
var y=typeof "object";
it returns string
so 
console.log(typeof typeof x);
show string

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接