美文网首页js牛客面试题目
js中声明函数的正确方法

js中声明函数的正确方法

作者: 梁海杰_IRV | 来源:发表于2017-09-02 15:45 被阅读0次

    题目:以下代码的输出结果是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。

    相关文章

      网友评论

        本文标题:js中声明函数的正确方法

        本文链接:https://www.haomeiwen.com/subject/bnkrjxtx.html