2

初心者の質問を許してください。しかし、coffeeREPL (または TextMate 内で作成および実行されるファイル) から (ほとんど) 標準関数を呼び出すことができないのはなぜですか?

変数の割り当ては機能しますが、関数は機能しません。

例:

coffee> string = "string"
'string'
coffee> list = [1,2,3]
[ 1, 2, 3 ]
coffee> num = 42
42
coffee> opposite = true
true
coffee> num = -42 if opposite
-42

しかし

coffee> alert "Hello, World"
ReferenceError: alert is not defined
    at repl:1:5
    at REPLServer.replDefaults.eval (/usr/local/lib/node_modules/coffee-script/lib/coffee-script/repl.js:33:28)
    at repl.js:239:12
    at Interface.<anonymous> (/usr/local/lib/node_modules/coffee-script/lib/coffee-script/repl.js:62:9)
    at Interface.EventEmitter.emit (events.js:117:20)
    at Interface._onLine (readline.js:202:10)
    at Interface._line (readline.js:531:8)
    at Interface._ttyWrite (readline.js:760:14)
    at ReadStream.onkeypress (readline.js:99:10)
    at ReadStream.EventEmitter.emit (events.js:117:20)

coffee> print "Hello"
ReferenceError: print is not defined
    at repl:1:5
    at REPLServer.replDefaults.eval (/usr/local/lib/node_modules/coffee-script/lib/coffee-script/repl.js:33:28)
    at repl.js:239:12
    at Interface.<anonymous> (/usr/local/lib/node_modules/coffee-script/lib/coffee-script/repl.js:62:9)
    at Interface.EventEmitter.emit (events.js:117:20)
    at Interface._onLine (readline.js:202:10)
    at Interface._line (readline.js:531:8)
    at Interface._ttyWrite (readline.js:760:14)
    at ReadStream.onkeypress (readline.js:99:10)
    at ReadStream.EventEmitter.emit (events.js:117:20)

本当に私を得るのは:

coffee> console.log "Help!"
Help!
undefined

Node は Homebrew 経由でインストールされ、CoffeeScript は (グローバルに) 経由​​でインストールされていnpmます。

4

3 に答える 3

5

alertJavaScriptの機能ではありません。これは、ブラウザーが JavaScript に公開する API の一部です。そしてcoffee、コンピューターのコマンドラインにはnode.js、ノードによって解釈されるように、コーヒー スクリプトを javascript に変換した薄いラッパーがあります。 node.js機能を提供しませんalert。また、グローバルprint機能も提供しません。

ノードとブラウザの両方が、consoleオブジェクトをグローバルに提供します。同じようconsole.logに動作します。

ノードのドキュメントをブラッシュアップして、ノードが公開している機能を確認してください。また、ブラウザで動作するからといって、ノードで動作するとは限りません。

于 2013-10-03T22:02:02.240 に答える
1

alertネイティブ関数ではありprintませんnode.js

サンプル コード スニペットを変更せずにコマンド ラインで coffee を開始する場合は、コードを実行する前に、プロンプトで次の 2 つの割り当てを試してください。

print = console.log
alert = console.log

これは、開始するための小さな Hello World 関数です。

coffee> hello = (word) -> console.log "Hello " + word
coffee> hello "World"
Hello World

于 2016-10-31T07:14:19.590 に答える