2016-10-09 10 views
2

ノードでは、この例でどのように定義されていませんか?ノードでは、この内部関数は未定義と等しい

私は厳密なモードを使用していないので、関数内からグローバルオブジェクトにアクセス可能でなければなりません。

this.foo = "bar"; 

function fun() { 
    console.log(this.foo); 
} 

fun(); // undefined 
+0

@Mohammad、ノード上で、グローバルオブジェクトが 'はGlobal'を用いて得られる – Lev

+0

を行います。 –

答えて

0

このフラグメントをMDNの約"use strict"モードで表示します。

まず、厳密モードで機能するthisとして渡された値(別名「ボックス化」)オブジェクトであるに強制されません。通常の関数の場合、thisは常にオブジェクトです。オブジェクト値thisで呼び出された場合は、指定されたオブジェクトか、ブール値、文字列、または数値で呼び出された場合、ボックス化された値this;またはstrictモード機能のために...未定義またはnull thisで呼び出された場合にグローバルオブジェクトは、指定されたthisは、オブジェクトに箱詰めされていない、と指定されていない場合は、thisは不定となります。最高の説明については

例えば、基準参照: "Securing" JavaScript (MDN)

もstackoverflowのこの記事を参照してください。In node.js, how the 'use strict' statement is interpreted?

+0

いいえ、node.jsは単独で厳密モードを有効にしません。 OPは彼が厳格な ""を使用しないと述べている。 – Bergi

+0

あなたは@Bergiですが、 'node --use_strict'フラグを使って' npm'スクリプトを実行しています。 – jherax

関連する問題