类型("苹果")与"苹果"类型背后的推理



只是四处闲逛,看看我通常忽略的区域,并注意到了这一点。

typeof('apple'); //"string"
typeof 'apple'; //"string"

好的,首先,第二个示例如何工作?我得到第一个是函数和参数。第二个是恰好与函数同名的运算符吗?这是怎么回事?

第二个问题:为什么要这样做?我可以在不使用 (( 的情况下定义我的函数吗?

你的问题是基于typeof是一个函数的假设。不是! typeof是一个一元运算符,就像-+~!一样。

这是怎么回事?

此表达式

typeof('apple')

不是函数调用,它是后跟括号表达式的typeof运算符。它与写!(foo)而不是!foo相同。

为什么要这样做?

如果你看到这样的代码,要么是

为了让一些优先级更清晰,要么是编写代码的人不知道更好。

我可以在不使用 (( 的情况下定义我的函数吗?

定义函数和调用函数是两回事。我假设你的意思是后者,答案是否定的。但是,如果不传递参数,则可以在不()的情况下调用构造函数。即 new Foonew Foo() 相同。

你可以阅读 MDN

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

运算符的类型后跟其操作数:

操作数类型

// Strings
typeof "" === 'string';
typeof "bla" === 'string';
typeof (typeof 1) === 'string'; // typeof always return a string
typeof String("abc") === 'string'; // but never use this form!

最新更新