Javascript中这个Coffeescript代码的等价物是什么?

时间:2013-04-15 02:07:06

标签: javascript coffeescript

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

2 个答案:

答案 0 :(得分: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的主要推动者之一就是能够以更少的样板编写所有这些回调函数。

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

答案 1 :(得分: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()

            }
        });
    });
});