黄子涵

6.2 函数调用的分类

表6.1 函数调用的分类

名称 说明
方法调用 通过接收方对象对函数进行调用(包括apply 与call 调用)
构造函数调用 通过new 表达式对函数进行调用
函数调用 以上两种方式之外的函数调用

将以方法调用的方式使用的函数称为方法,同理,将以构造函数调用方式使用的函数称为构造函数。

函数声明语句的后置

通过函数声明语句声明的函数,可以在进行声明的代码行之前就对其调用。虽然这个例子在函数的作
用域内进行,不过对于全局作用域情况也是相同。

function hzh1() {
    hzh2(); // 在声明函数fn之前对其进行调用
    function hzh2() {
        console.log('黄子涵');
    }
}
hzh1();
[Running] node "e:\HMV\JavaScript\JavaScript.js"
黄子涵

[Done] exited with code=0 in 99.724 seconds

通过函数声明语句声明的函数,可以在进行声明的代码行之前就对其调用。在通过匿名函数表达式进行定义的情况下结果将会不同。

function hzh3() {
    hzh4();
    var hzh4 = function() {
        console.log('黄子涵');
    }
}
hzh3();
[Running] node "e:\HMV\JavaScript\JavaScript.js"
e:\HMV\JavaScript\JavaScript.js:2
    hzh4();
    ^

TypeError: hzh4 is not a function
    at hzh3 (e:\HMV\JavaScript\JavaScript.js:2:5)
    at Object.<anonymous> (e:\HMV\JavaScript\JavaScript.js:7:1)
    at Module._compile (internal/modules/cjs/loader.js:999:30)
    at Object.Module._extensions..js (internal/modules/cjs/loader.js:1027:10)
    at Module.load (internal/modules/cjs/loader.js:863:32)
    at Function.Module._load (internal/modules/cjs/loader.js:708:14)
    at Function.executeUserEntryPoint [as runMain] (internal/modules/run_main.js:60:12)
    at internal/main/run_main_module.js:17:47

[Done] exited with code=1 in 3.35 seconds
posted @ 2022-05-28 16:54  黄子涵  阅读(42)  评论(0编辑  收藏  举报