Node.js グローバル オブジェクト
JavaScript には、グローバル オブジェクトと呼ばれる特別なオブジェクトがあり、このオブジェクトとそのすべてのプロパティには、プログラム内のどこからでもアクセスできます。つまり、グローバル変数です。
ブラウザのJavaScriptでは、通常、ウィンドウはグローバルオブジェクトですが、 Node.js のグローバル オブジェクトはグローバルであり、すべてのグローバル変数 (グローバル自体を除く) はグローバルです オブジェクトのプロパティ。
Node.js では、アプリケーションに含めることなく、グローバル プロパティに直接アクセスできます。
グローバル オブジェクトとグローバル変数
グローバルの最も基本的な役割は、グローバル変数のホストとして機能することです。 ECMAScriptの定義によれば、以下の条件が満たされます。 ファイルの変数はグローバル変数です:
最外層で定義された変数;
暗黙的に定義された変数 (直接代入用に定義されていない変数)。
グローバル変数を定義すると、この変数はグローバル オブジェクトのプロパティにもなり、その逆も同様です。注意が必要です 興味深いことに、Node.js ではすべてのユーザー コードが現在のモジュールに属しているため、最も外側のレベルで変数を定義することはできません。 モジュール自体は最も外側のコンテキストではありません。
グローバル変数が汚染される可能性があるため、グローバル変数の導入を避けるために、常に var を使用して変数を定義してください。 名前空間はコード結合のリスクを高めます。
__filename
__filename
は、現在実行中のスクリプトのファイル名を表します。ファイルの場所の絶対パスが出力されますが、コマンド ライン パラメーターで指定したファイル名と同じでない場合があります。 モジュール内の場合、戻り値はモジュール ファイルへのパスです。
例 ファイル main.js を作成します。コードは次のとおりです。
// 输出全局变量 __filename 的值 console.log( __filename );
main.js ファイルを実行します。コードは次のとおりです。
$ node main.js /web/com/php/nodejs/main.js__dirname
__dirname
は、現在ファイルが存在するディレクトリを表します。実行中のスクリプトが見つかりました。
例ファイル main.js を作成します。コードは次のとおりです。
// 输出全局变量 __dirname 的值 console.log( __dirname );
main.js ファイルを実行します。コードは次のとおりです。
$ node main.js /web/com/php/nodejssetTimeout(cb, ms)
setTimeout(cb , ms)
グローバル関数は、指定されたミリ秒 (ms) 数後に指定された関数 (cb) を実行します。 :setTimeout() は、指定された関数を 1 回だけ実行します。
タイマーを表すハンドル値を返します。 インスタンス
ファイル main.js を作成します。コードは次のとおりです。
function printHello(){ console.log( "Hello, World!"); } // 两秒后执行以上函数 setTimeout(printHello, 2000);
main.js ファイルを実行します。コードは次のとおりです。
$ node main.js Hello, World!clearTimeout(t)
clearTimeout(t)
グローバル関数が使用されます。 setTimeout() によって以前に作成されたタイマーを停止します。 パラメーター
tは、setTimeout() 関数によって作成された計算機です。 例ファイル main.js を作成します。コードは次のとおりです。
function printHello(){ console.log( "Hello, World!"); } // 两秒后执行以上函数 var t = setTimeout(printHello, 2000); // 清除定时器 clearTimeout(t);
main.js ファイルを実行します。コードは次のとおりです。
$ node main.jssetInterval(cb, ms)
setInterval(cb , ms)
グローバル関数は、指定されたミリ秒 (ms) 数後に指定された関数 (cb) を実行します。
タイマーを表すハンドル値を返します。 clearInterval(t) 関数を使用してタイマーをクリアできます。
setInterval() メソッドは、clearInterval() が呼び出されるかウィンドウが閉じるまで関数を呼び出し続けます。
例
ファイル main.js を作成します。コードは次のとおりです。
function printHello(){ console.log( "Hello, World!"); } // 两秒后执行以上函数 setInterval(printHello, 2000);
main.js ファイルを実行します。コードは次のとおりです。
$ node main.jsHello, World! こんにちは世界! こんにちは世界! こんにちは世界! こんにちは世界! …
上記のプログラムは、2秒ごとに「Hello, World!」を出力し、ctrl + cボタンを押すまで永久に実行されます。
console
console は、コンソールの標準出力を提供するために使用されます。これは、Internet Explorer の JScript エンジンによって提供されるデバッグ ツールであり、徐々にブラウザーの事実上の標準になりました。
Node.js はこの標準に従い、標準出力ストリーム (stdout) または標準エラー ストリーム (stderr) に文字を出力するために使用される、一貫した動作を持つコンソール オブジェクトを提供します。
コンソールメソッド
コンソールオブジェクトのメソッドは以下のとおりです:
シリアル番号 | メソッドと説明 | ||||||||||||||||||||||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
1 | console.log([data][, ...]) 標準に準拠 出力ストリームは文字を出力し、改行文字で終わります。このメソッドは複数のパラメータを受け取ります。パラメータが 1 つしかない場合は、このパラメータの文字列形式が出力されます。複数の引数がある場合、出力は C 言語の printf() コマンドに似た形式になります。 | ||||||||||||||||||||||||||||||||||||
2 | console.info([data][, ...]) Pこのコマンドの機能は、chrome のみを除き、情報メッセージを返すことです。テキストが出力され、残りには青い感嘆符が表示されます。 | ||||||||||||||||||||||||||||||||||||
3 | console.error([data][, ...]) はエラーメッセージを出力します。エラーが発生すると、コンソールに赤い十字が表示されます。 | ||||||||||||||||||||||||||||||||||||
4 | console.warn([data][, ...]) 警告メッセージを出力します。コンソールに黄色の感嘆符が表示されます。 | ||||||||||||||||||||||||||||||||||||
5 | console.dir(obj[, options]) は、オブジェクトを検査し、読みやすく印刷しやすい形式で表示するために使用されます。 | ||||||||||||||||||||||||||||||||||||
6 | console.time(label) タイミングの開始を示す出力時間。 | ||||||||||||||||||||||||||||||||||||
7 | console.timeEnd(label) タイミングの終了を示す終了時間。 | ||||||||||||||||||||||||||||||||||||
console.trace(message[, ...])スタック内で現在実行されているコードの呼び出しパス。このテスト関数は、必要な関数にコンソールを追加するだけで非常に役立ちます。 .trace でテストできます。 | |||||||||||||||||||||||||||||||||||||
console.assert(value[, message][, ...]) | は、式または変数が true であるかどうかを判断するために使用されます。最初のパラメーターは式です。式の場合、2 番目のパラメータは文字列です。 2 番目のパラメータは、最初のパラメータが false の場合にのみ出力され、それ以外の場合は結果はありません。 |
シリアル番号 | イベントと説明 |
---|---|
1 | exit プロセスを終了する準備ができたときにトリガーされます。 |
2 | beforeExit このイベントは、ノードがイベント ループをクリアし、他の取り決めがないときにトリガーされます。通常、プロセスがスケジュールされていない場合、ノードは終了しますが、「beforeExit」リスナーを非同期的に呼び出すことができるため、ノードは実行を継続できます。 |
3 | uncaughtException 例外がイベント ループにバブルバックすると、このイベントがトリガーされます。モニターが例外に追加された場合、デフォルトのアクション (スタック トレースを出力して終了) は発生しません。 |
4 | Signalイベント は、プロセスがシグナルを受信するとトリガーされます。シグナルのリストについては、SIGINT、SIGUSR1 などの標準 POSIX シグナル名を参照してください。 |
例
ファイル main.js を作成します。コードは次のとおりです。
process.on('exit', function(code) { // 以下代码永远不会执行 setTimeout(function() { console.log("该代码不会执行"); }, 0); console.log('退出码为:', code); }); console.log("程序执行结束");
main.js ファイルを実行します。コードは次のとおりです。
$ node main.js 程序执行结束 退出码为: 0
終了ステータス コード
終了ステータス コードは次のとおりです:
ステータス コード | 名前と説明 |
---|---|
1 | キャッチされていない致命的例外 キャッチされなかった例外があり、ドメインまたは uncaughtException ハンドラーによって処理されませんでした。 |
2 | 未使用 予約済み |
3 | 内部JavaScript解析エラー JavaScriptソースコードにより、ノードプロセスの開始時に解析エラーが発生します。非常にまれですが、Node の開発時にのみ使用できます。 |
4 | 内部JavaScript評価失敗 JavaScriptのソースコードはNodeプロセスを開始し、評価中に関数失敗を返します。非常にまれですが、Node の開発時にのみ使用できます。 |
5 | 致命的なエラー V8 の致命的で回復不可能なエラー。通常、stderr に出力され、内容は次のとおりです: FATAL ERROR |
6 | Non-function Internal Exception Handler キャッチされない例外、内部例外ハンドラー関数が何らかの理由で on-function に設定されており、呼び出すことができません。 |
7 | 内部例外ハンドラーの実行時エラー 例外がキャッチされず、例外処理関数が処理中に例外自体をスローしました。たとえば、process.on('uncaughtException') またはdomain.on('error') が例外をスローした場合です。 |
8 | 未使用 予約済み |
9 | 無効な引数 不明なパラメータが指定されているか、指定されたパラメータに値がない可能性があります。 |
10 | 内部 JavaScript 実行時エラー Node プロセスの開始時に JavaScript ソース コードがエラーをスローする これは非常にまれで、Node の開発時にのみ発生します。 |
12 | 無効なデバッグ引数 パラメータ --debug および/または --debug-brk が設定されていますが、間違ったポートが選択されています。 |
>128 | シグナル終了 ノードが SIGKILL や SIGHUP などの致命的なシグナルを受信した場合、終了コードは 128 にシグナル コードを加えたものになります。これは標準的な Unix の慣行であり、終了シグナル コードが上位に配置されます。 |
プロセス属性
プロセスは、システムの対話をより適切に制御するのに役立つ多くの便利な属性を提供します:
シリアル番号. | プロパティと説明 | ||||||||||||||||||||||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
1 | stdout 標準出力ストリーム。 | ||||||||||||||||||||||||||||||||||||
2 | stderr 標準エラーストリーム。 | ||||||||||||||||||||||||||||||||||||
3 | stdin 標準入力ストリーム。 | ||||||||||||||||||||||||||||||||||||
4 | argv argv プロパティは、コマンドラインからスクリプトを実行するときに、さまざまなパラメーターで構成される配列を返します。最初のメンバーは常にノード、2 番目のメンバーはスクリプト ファイル名、残りのメンバーはスクリプト ファイルのパラメーターです。 | ||||||||||||||||||||||||||||||||||||
5 | execPath 現在のスクリプトを実行する Node バイナリへの絶対パスを返します。 | ||||||||||||||||||||||||||||||||||||
6 | execArgv コマンドラインでスクリプトを実行するときに、メンバーがノード実行可能ファイルとスクリプトファイルの間のコマンドラインパラメータである配列を返します。 | ||||||||||||||||||||||||||||||||||||
7 | env メンバーが現在のシェルの環境変数であるオブジェクトを返します | ||||||||||||||||||||||||||||||||||||
8 | exitCode プロセスが process.exit を通じて終了する場合のコード。 ()、終了コードを指定する必要はありません。 | ||||||||||||||||||||||||||||||||||||
9 | version ノードのバージョン (v0.10.18 など)。 | ||||||||||||||||||||||||||||||||||||
10 | versions ノードのバージョンと依存関係を含むプロパティ。 | ||||||||||||||||||||||||||||||||||||
11 | config 現在のノードの実行可能ファイルをコンパイルするために使用されるJavaScript構成オプションを含むオブジェクト。これは、./configure スクリプトを実行して生成されるのと同じ「config.gypi」ファイルです。 | ||||||||||||||||||||||||||||||||||||
12 | pid 現在のプロセスのプロセス番号。 | ||||||||||||||||||||||||||||||||||||
13 | title プロセス名、デフォルト値は「node」ですが、この値はカスタマイズできます。 | ||||||||||||||||||||||||||||||||||||
14 | arch 現在の CPU アーキテクチャ: 'arm'、'ia32' または 'x64'。 F15lPlatform | ||||||||||||||||||||||||||||||||||||
16 Requile | |||||||||||||||||||||||||||||||||||||
例ファイル main.js を作成します。コードは次のとおりです。 // 输出到终端 process.stdout.write("Hello World!" + "\n"); // 通过参数读取 process.argv.forEach(function(val, index, array) { console.log(index + ': ' + val); }); // 获取执行路局 console.log(process.execPath); // 平台信息 console.log(process.platform); main.js ファイルを実行します。コードは次のとおりです。 $ node main.js Hello World! 0: node 1: /web/www/node/main.js /usr/local/node/0.10.36/bin/node darwin メソッド リファレンス マニュアルプロセスは、より良いものを容易にするために多くの便利なメソッドを提供します。制御システムの相互作用:
インスタンスファイルmain.jsを作成します。コードは次のとおりです: // 输出当前目录 console.log('当前目录: ' + process.cwd()); // 输出当前版本 console.log('当前版本: ' + process.version); // 输出内存使用情况 console.log(process.memoryUsage()); main.jsファイルを実行します。コードは次のとおりです: $ node main.js 当前目录: /web/com/php/nodejs 当前版本: v0.10.36 { rss: 12541952, heapTotal: 4083456, heapUsed: 2157056 } |