js中声明函数的正确方法

题目:以下代码的输出结果是d
A. "number"
B. "undefined"
C. "function"
D .Error

var f = function g() {
        return 23;
    };
typeof g();
  • 实践证明:
    如果是typeof f,结果是function
    如果是typeof f(),结果是number
    如果是typeof g,结果是undefined.
    如果是typeof g(),结果是ReferenceError,g is not defined

  • 原理
    在 JS 里,声明函数只有 2 种方法:
    第 1 种: function foo(){...} (函数声明)
    第 2 种: var foo = function(){...} (等号后面必须是匿名函数,这句实质是函数表达式)

除此之外,类似于 var foo = function bar(){...} 这样的东西统一按 2 方法处理,即在函数外部无法通过 bar 访问到函数,因为这已经变成了一个表达式。

但为什么不是 "undefined"?
这里如果求 typeof g ,会返回 undefined,但求的是 g(),所以会去先去调用函数 g,这里就会直接抛出异常,所以是 Error。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容