関数スコープの問題-関数が定義されていません

J86

NodeJSで構築されたアプリで作業しています。私はモジュールを使用しています。これまでのコードは次のとおりです。

コード:PROGRAM.JS

var path     = process.argv[2];
var ext      = '.' + process.argv[3];
var prsFiles = require('./fpmod');

function callback(err, files) {
    if(!err) {
        success(ext, files);
    } else {
        throw ('uhoh there was an error! :/');
    }
}

prsFiles.process(path, ext, callback);

コード:FPMOD.JS

var fs      = require('fs');
var pathMod = require('path');
var i       = 0;

function success(ext, files) {
    for(i; i < files.length; i++) {
        // console.log('File comes in as: ' + files[i] + ' and we\'re filtering on .' + ext);
        var currentFile    = files[i];
        var currentFileExt = pathMod.extname(currentFile);
        // console.log('grabbed ext is: ' + currentFileExt);

        if(ext) {
            if(ext === currentFileExt) {
                console.log(currentFile);
            }
        } else {
            console.log(currentFile);
        }
    }
}

function processFiles(path, ext, callback) {
    var success = success;
    fs.readdir(path, callback);
}

exports.process = processFiles;

私が得ているエラーは、成功関数が定義されていないことを示しています。何故ですか?関数スコープの私の理解が正しければ、成功関数にアクセスできるはずです!何が間違っているのですか?

先のとがった

JavaScriptでのスコープは字句です。重要なのは、関数が定義されたときに関数内のコードに表示されるシンボルのセットです。重要なのは定義の時点でのスコープのセットであると言った方が正確だと思います。関数スコープはdelete、エクスポートするシンボルのセットに関しては不変ですが(ただし、これは奇妙で、厳密モードでは許可されていません)、グローバルスコープは不変ではありません。モジュールスコープは関数スコープのように機能します(ノードのエキスパートではないことを認めます)。ただし、モジュールを使用しているため、ここではグローバルスコープは実際には問題になりません。

メインモジュールで定義されている「コールバック」関数は、定義された時点で「成功」と呼ばれるシンボルにアクセスできません。他のモジュールの関数に「成功」​​と呼ばれるローカルシンボルがあるという事実は役に立ちません。そのシンボルは「コールバック」関数とは完全に異質です。これはJavaScriptでできることではありません。

ノード環境では、モジュール内のエクスポートされていないシンボルは事実上そのモジュールにプライベートであることに注意してください。

この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。

侵害の場合は、連絡してください[email protected]

編集
0

コメントを追加

0

関連記事

分類Dev

スコープの質問、ネストされた関数で変数が定義されていません

分類Dev

変数が関数で定義されていません

分類Dev

関数内で変数が定義されていません

分類Dev

匿名関数エラー:$が定義されていません

分類Dev

参照エラー:関数が定義されていません

分類Dev

Python、エラー:「関数が定義されていません」、

分類Dev

Angular 9 onclick関数が定義されていません

分類Dev

関数が定義されていません。

分類Dev

Uncaught ReferenceError:関数がonclickで定義されていません

分類Dev

jqueryonclick関数が定義されていません

分類Dev

ReferenceError:関数がJavaScriptで定義されていません

分類Dev

ReactJS UncaughtReferenceError関数が定義されていません

分類Dev

JS、Browserify:関数が定義されていません

分類Dev

mapDispatchToProps関数が定義されていません

分類Dev

jQueryAJAX関数が定義されていません

分類Dev

String .length()関数が定義されていません

分類Dev

関数が定義されていませんC#

分類Dev

関数削除が定義されていません-Jquery(Ajax)

分類Dev

navigator.getUserMedia関数が定義されていません

分類Dev

関数が定義されていません(selenium / python)

分類Dev

ReferenceError:関数が定義されていませんか?

分類Dev

ReferenceError:「関数」が定義されていません

分類Dev

Javascript関数が定義されていません

分類Dev

matlab逆関数が定義されていません

分類Dev

関数内でjQueryが定義されていません

分類Dev

$ qが関数で定義されていません

分類Dev

C ++ CreateWindow()関数が定義されていません

分類Dev

Javascript-ReferenceError xが定義されていません(関数)

分類Dev

awk:関数asortiが定義されていません

Related 関連記事

  1. 1

    スコープの質問、ネストされた関数で変数が定義されていません

  2. 2

    変数が関数で定義されていません

  3. 3

    関数内で変数が定義されていません

  4. 4

    匿名関数エラー:$が定義されていません

  5. 5

    参照エラー:関数が定義されていません

  6. 6

    Python、エラー:「関数が定義されていません」、

  7. 7

    Angular 9 onclick関数が定義されていません

  8. 8

    関数が定義されていません。

  9. 9

    Uncaught ReferenceError:関数がonclickで定義されていません

  10. 10

    jqueryonclick関数が定義されていません

  11. 11

    ReferenceError:関数がJavaScriptで定義されていません

  12. 12

    ReactJS UncaughtReferenceError関数が定義されていません

  13. 13

    JS、Browserify:関数が定義されていません

  14. 14

    mapDispatchToProps関数が定義されていません

  15. 15

    jQueryAJAX関数が定義されていません

  16. 16

    String .length()関数が定義されていません

  17. 17

    関数が定義されていませんC#

  18. 18

    関数削除が定義されていません-Jquery(Ajax)

  19. 19

    navigator.getUserMedia関数が定義されていません

  20. 20

    関数が定義されていません(selenium / python)

  21. 21

    ReferenceError:関数が定義されていませんか?

  22. 22

    ReferenceError:「関数」が定義されていません

  23. 23

    Javascript関数が定義されていません

  24. 24

    matlab逆関数が定義されていません

  25. 25

    関数内でjQueryが定義されていません

  26. 26

    $ qが関数で定義されていません

  27. 27

    C ++ CreateWindow()関数が定義されていません

  28. 28

    Javascript-ReferenceError xが定義されていません(関数)

  29. 29

    awk:関数asortiが定義されていません

ホットタグ

アーカイブ