【发布时间】:2023-04-08 00:54:01
【问题描述】:
我正在学习JavaScript,我在代码中看到使用typeof和typeof()是一样的,例如:
两种情况下的结果都是数字:
console.log(typeof 1);
console.log(typeof(1));
【问题讨论】:
-
同理
1+2与(1)+(2)同理
标签: javascript
我正在学习JavaScript,我在代码中看到使用typeof和typeof()是一样的,例如:
两种情况下的结果都是数字:
console.log(typeof 1);
console.log(typeof(1));
【问题讨论】:
1+2与(1)+(2)同理
标签: javascript
typeof 根据ES5 spec 是一元运算符——例如,与void 和delete 相同。使用分组 () 包装其表达式只是为了方便(并且 - 理论上 - 覆盖默认优先级),但绝不会将其视为函数调用。
【讨论】:
因为“typeof”是一个运算符(不是函数,也不是对象),而运算符可以用在带括号的表达式中:
https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Operators/typeof
【讨论】:
typeof 是一个运算符,就像 +、-、%、&& 等一样。它不是方法,“1”不是传递的参数,不需要括号。但是它会接受括号,因为它们只是指定了操作的顺序,就像 (1) + (2) 是可以接受的,即使括号不是必需的。所以你给出的例子在这两种情况下都是可以接受的。
【讨论】:
typeof 运算符不是函数。您可以用括号括住操作数,使表达式看起来像一个函数调用,但括号将仅充当分组运算符(在默默无闻的啄食顺序中仅次于逗号运算符!)。事实上,您可以使用各种标点符号来装饰操作数,而不会影响操作符。
typeof (2) //"number"
typeof(2) //"number"
typeof ("a", 3) //"number"
typeof (1 + 1) //"number"
【讨论】:
typeof ("a', 3),可以得到"a", 3 表达式结果类型的描述——这就是3,因为逗号运算符就是这样工作的。 )