-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();
      });
    });
  });
});

它到处都有回报。

好吧,您在那里定义的每个函数都有一个返回值。

Coffeescript 的主要动机之一是能够用更少的样板编写所有这些回调函数。

无论哪种方式,编译器都是“准确的”。

于 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 回答