【问题标题】:What does "unevaluated" mean in desctiption of "typeof" operator?“未评估”在“typeof”运算符的描述中是什么意思?
【发布时间】:2018-01-28 20:52:48
【问题描述】:

来自MDN:

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

请您说一下,这个描述中的“未评估”是什么意思?


因为在typeof func()中调用了函数(这是合理的,但与前面的描述有点不一致):

function func() {
  console.log('func is called');
  return 0;
}

console.log(typeof func());

【问题讨论】:

    标签: javascript typeof


    【解决方案1】:

    这是具有高度误导性的术语。当然typeof需要将其操作数求值来判断该值的类型!

    只有一个值得注意的例外,这可能是“未评估”所指的:typeof 不评估无法解析的引用。如果您使用未在任何地方声明的标识符,评估它通常会引发异常(至少在严格模式下)。但是,typeof 只会告诉您它是 "undefined"。

    【讨论】:

      【解决方案2】:

      问题的第一部分:

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

      未计算的操作数表示尚未检查其类型的值。


      您正在函数返回的整数上调用 typeof。所以,你得到一个数字,像这样:

      function func() {
        console.log('func is called');
        return 0;
      }
      
      console.log(typeof func());

      要将函数作为参数传递,您可以在func 上编写不带括号() 的console.log(typeof func);。

      注意:这里不会调用函数

      function func() {
            console.log('func is called');
            return 0;
          }
      
          console.log(typeof func);

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2013-05-07
        • 2015-09-18
        • 2017-03-29
        • 2011-03-16
        • 2011-07-09
        • 2016-07-23
        • 1970-01-01
        相关资源
        最近更新 更多