为什么 typeof 和 typeof() 是相同的?

4
我正在学习JavaScript,发现在代码中使用typeoftypeof()是相同的。例如:
无论哪种方式,结果都是数字:
console.log(typeof 1); 
console.log(typeof(1));

相关问题:https://dev59.com/BmUo5IYBdhLWcg3wrhLj?rq=1 - Zack The Human
同样的原因,1+2(1)+(2) 是一样的。 - six fingered man
4个回答

8

typeof 是基于 ES5 规范 的一元运算符,与 voiddelete 相同。举个例子,用圆括号 () 包裹表达式只是为了方便(理论上说还可以覆盖默认优先级),但从未将其视为函数调用。


谢谢,因此 typeof 是一个一元运算符。 - Diego De Santiago
1
例如,在C和C++中,一元运算符sizeof。 - Diego De Santiago

1

1

typeof是一个操作符,就像+、-、%、&&等一样。它不是一个方法,"1"也不是一个传递的参数,因此不需要括号。不过,它可以接受括号,因为它们只是指定运算顺序,就像(1)+(2)虽然不必要,但仍然是可以接受的。因此,你提供的例子在两种情况下都是可以接受的。


0
typeof 运算符不是一个函数。你可以用括号将操作数括起来,使表达式看起来像一个函数调用,但这些括号只会作为一个分组运算符(仅次于逗号运算符在难懂程度排序中!)。实际上,你可以用各种标点符号装饰操作数,而不会干扰到这个运算符。
typeof (2) //"number"
typeof(2) //"number"
typeof ("a", 3) //"number"
typeof (1 + 1) //"number"

你想要用第三个例子展示什么并不是很清楚。使用 typeof ("a', 3),可以获取 "a", 3 表达式结果的类型描述 - 这是 3,因为逗号运算符就是这样工作的。 - raina77ow

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