2016-10-19 9 views
0

私はJavascriptをかなり新しくしていて、何かを混乱させています。なぜ、println( "...");というコマンドを変数として呼び出せないのですか:var num = println( "...");私は間違っている可能性があります。 「方法を知って幸せになる。しかし、いくつかのテストの後、それは私ができないように思えるdは私のテストコードは次のとおりです。。なぜprintln()できません。変数として使用できますか?

function start() { 
    var SENTINEL = "1 1"; 
    var rollOne = Randomizer.nextInt(1, 6); 
    var rollTwo = Randomizer.nextInt(1, 6); 
    var num = println(rollOne + rollTwo); 
    if(num == SENTINEL) { 
      println("You did it"); 
    } 
} 

あれば、の##の形式で乱数を与えているんとするはずのすべてそれは、数字が1,1であることを見て、それはメッセージを与えるでしょう。それはメッセージを与えていない、実際の変数として変数 "num"を見ることができないようです。番号の場合:

function start() { 
    var SENTINEL = -1; 
    var rollOne = Randomizer.nextInt(1, 6); 
    var rollTwo = Randomizer.nextInt(1, 6); 
    var num = readInt("Enter number"); 
    if(num == SENTINEL) { 
     println("You did it"); 
} 

} -1を押すと、センチネルが起動し、すぐにメッセージが表示されます。これは簡単な質問をするために本当にラウンドアバウトな方法ですが、私はいくつかの助けを得ることができることを願っています。ありがとうございました:)

+1

「println」は何ですか? 'Randomizer'か' readInt'ですか? – Li357

+0

@AndrewLiおそらく、与えられたヘルパーライブラリを使った代入です。 –

+0

あなたは@DorInteを教えなければなりません。それらのメソッドがどのように実装されているかはわかりません。 – Clive

答えて

1

なぜコマンド "のprintln(" ... ")することはできません。ような変数と呼ばれる:VAR numは=のprintln;習慣 [...]それ(" ... ")メッセージを与え、返された値が使用できない場合、変数

を見ることができないよう、それが最も可能性が高いundefinedであり、機能printlnすなわち、明示的には何も返さない

をお使いの場合は、。次のようなものを試すことができます:

var printInt = function(num) { println(num); return num; } 

注:printlnは、標準のJavaScript言語の一部ではありません。最新のウェブブラウザでは、(console.log(...))を使用するように適合させることができる。

var printInt = function(num) { console.log(num); return num; } 

そして、あなたのコードに適応する:

var num = printInt(rollOne + rollTwo); 

しかし、あなたは"1 1"に対して比較しているので、あなたのロジックが2を返します。一方、これはまだ検証されません。 JavaScriptは(他の多くの言語と同様に)2つの数字が指定されている場合は暗黙的にadditionを使用しますが、少なくとも1つの文字列が指定されている場合は連結します。

var SENTINEL = "1 1"; // <---- String! 
var SENTINEL = -1;  // <---- Number! 

だからではなく、この(従って改称)のようなものを検討する必要があります。私はあなたを理解していれば、私は知らない

if(printRolls(rollOne + " " + rollTwo) == SENTINEL) 
    println("You did it"); 
+1

関数から返された値を変数に代入することは可能です。関数によっては 'undefined'が返ってくることに注意してください。 – nnnnnn

+0

@nnnnnn 'undefined'についての注釈を追加し、コンテキストに関連する引用符を追加しました – tresf

0

printlnは、渡された文字列を返さない可能性があります。その場合、文字列を書式設定し、同等性を適切にテストするには、

if (SENTINEL === rollOne + " " + rollTwo) 

を使用できます。

-2

var printRolls = function(text) { println(text); return text; } 
var rolls = printRolls(rollOne + " " + rollTwo); 
if(rolls == SENTINEL) { 
     println("You did it"); 
} 

それとも少しを簡素化するために質問ははっきりと。

なぜ変数に直接置くのではなく、それをprintln()に囲むのではなく変数に入れてください。あなたはJavaScriptでは

var num = console.log(rollOne + rollTwo); 
+0

' console.log'のどのバージョンが番号を返しますか? – tresf

+1

'console.log()'は 'undefined'を返すので、' num'に代入することは本当に助けになりません。 – nnnnnn

0

を試してみてください、あなただけなど

window.print、document.writeを、にconsole.logを、使用することができますJavaScriptでアラートを表示したい場合、からの戻り値を代入することが可能ですあなたはそれをやった方法と同様の変数に任意の関数:

var anyVariable = anyFunction(); 

しかし、一部の機能は値undefinedを返します。または、数値、配列、または何でも返します。

あなたのprintln()関数は、画面上のどこかに(画面上の?コンソールに?)渡した値を出力してからundefinedを返すと思います。または、印刷された値を返す場合は、SENTINEL変数で使用したものとは異なる形式です。したがって、それをSENTINELと比較しようとすると、それは等しくなりません。それを印刷し、テストし、その後、変数へのロールの合計を割り当て、あなたの本来の機能を修正するため

function start() { 
    var SENTINEL = 2; 
    var rollOne = Randomizer.nextInt(1, 6); 
    var rollTwo = Randomizer.nextInt(1, 6); 
    var num = rollOne + rollTwo; 
    println(num); 
    if(num == SENTINEL) { 
      println("You did it"); 
    } 
} 

EDIT:あなたはprintln()"1 1"または"3 5"のような文字列を表示したい場合は二つのロールのそれぞれが、その後これを実行されたかを示すためには:

ある
println(rollOne + " " + rollTwo); 

、を連結した結果である新しい文字列を作成します210の値を1つの空白で置き換え、次にrollTwoの値。

+0

変数numの+記号は混乱している可能性がありますが、変数がrollOneとrollTwoの両方を一緒に追加するのではなく、それらを一緒に追加することを想定していると思われます。 –

+0

@DorInteそれは意味をなさない?2つの整数を加えて 'println'に渡します。両方の文字列を印字したい場合は文字列を使います。 – Li357

+0

2つの整数を追加するのではなく、rollOneとrollTwoの結果を表示しています。 +は「同様」と見なすことができます。疑似言語が私たちにそれを教えた方法は、rollOne + = rollTwoと言うことでした。 –

関連する問題