-2
phantom = require 'phantom'

phantom.create (ph) ->
  ph.createPage (page) ->
    page.open "http://www.google.com", (status) ->
      console.log "opened google? ", status
      page.evaluate (-> document.title), (result) ->
        console.log 'Page title is ' + result
        ph.exit()

このウェブサイトを使用してみましたが、あまり正確ではないようです。どこにでもリターンがあります。 http://js2coffee.org/#coffee2js

4

2 に答える 2

3

更新:再確認したところ、これらのリターンの一部は偽/冗長であるように見えます。これは、Coffeescript が常に関数の最後のステートメントの結果を返す (returnキーワードを保存できるようにするため) ためです。これは、Javascript では何も返さなかった場合でも (コンパイラーはここでの意図を知ることができません)。これは不必要かもしれませんが、戻り値を使用している人がいなければ害はありません。「何も返さない」ことが何らかの形で重要な場合は、明示的にそれを行うこともできます。


コンパイルして、結果を確認できます。

var phantom;

phantom = require('phantom');

phantom.create(function(ph) {
  return ph.createPage(function(page) {
    return page.open("http://www.google.com", function(status) {
      console.log("opened google? ", status);
      return page.evaluate((function() {
        return document.title;
      }), function(result) {
        console.log('Page title is ' + result);
        return ph.exit();
      });
    });
  });
});

どこにでもリターンがあります。

そこに定義するすべての関数には、1 つの戻り値があります。

Coffeescript の主な動機の 1 つは、これらすべてのコールバック関数をより少ないボイラープレートで記述できるようにすることです。

いずれにせよ、コンパイラは「正確」です。

于 2013-04-15T02:10:27.303 に答える
1
var phantom = require('phantom');

phantom.create(function(ph)) {

    ph.createPage(function(page) {

        page.open("http://www.google.com", function(status) {

            console.log("opened google? ", status);

            page.evaluate(function() { return document.title; }, function() {

                console.log('Page title is ' + result);
                ph.exit()

            }
        });
    });
});
于 2013-04-15T02:11:49.913 に答える