2017-01-17 10 views
1

あなたは、このコードの非常に最初の行に "(...)=>" 記号を見ることができます:このシンボル()=>はJavascriptで何を意味しますか?

const server = http.createServer((req,res) => { 
     res.statusCode = 200; 
     res.setHeader('content-type', 'text/plain'); 
     res.end('Hello World'); 
    }); 
+7

ES6の矢印機能 –

+0

https://developer.mozilla.org/he/docs/Web/JavaScript/:

(req, res) => {} 

は同等ですリファレンス/関数/ Arrow_functions – naortor

+0

なぜこれがダウン表示されていますか?私はそれがとても良い質問だと思う。 –

答えて

0

それは新しくES6で定義され、arrow functionです。

関数式より短い構文を持っていると、argumentsthis独自のバインドsuper、またはnew.targetしませんfunction expression矢印。矢印機能は常にanonymousです。これらの関数式は、非メソッド関数に最適であり、コンストラクタとして使用することはできません。


私はおそらくJavaScriptで矢印機能が匿名あることが最も重要になることを始めている人のためのように感じます。基本的には、すでに知られている匿名関数function() {}を作成する簡単な方法です。

  1. setTimeout(function() { 
        console.log("Hey"); 
    }, 1000); 
    
  2. setTimeout(() => { 
        console.log("Hey"); 
    }, 1000); 
    

これはあなたの例ではhttp.createServerは一つの引数、自身が二つの引数を取る関数を受け入れていることを意味します。コードの

これらの作品は、同じことを行います。


しかし、特定の状況では、矢印機能と通常の匿名機能を同等の機能とみなすことはできません。

+0

@ Teemuはい、あなたは正しいです。しかし、OPはJavaScriptには全く新しいので、私は単純化しようとしました。技術的に正しいと私の答えを広げるつもりです。 – theonlygusti

+1

か、それは既にうまく覆い隠されているからです。 –

+0

あなたはその違いを知っていると確信していますが、あまりに単純化すると誤解が非常に簡単になります。 DOMゲッターが配列を返すというのは、次の質問では質問者の投稿に「なぜ私の 'array.pop()'が機能しないのか」と尋ねるようなものです。 – Teemu

1

それはES6アロー機能である:

function(req, res){} 
+0

なぜこれは下降しましたか?それは実際には正しいですが、それは他の言語と比較して考えているように、JSではラムダではありません –

+1

JSのどのような矢印機能が単純化されていますか?彼らは匿名の機能の略語以上のものです。この答えの2つのスニペットが同等ではないと言っている限り、あなたはさらに行くことができます。 –

関連する問題