2017-08-22 14 views
0

次のコード行では、関数tableFor( "pizza"、JOURNAL)を呼び出すときにJOURNALを2行目から最後の行に大文字にする必要があるのはなぜですか? ?Eloquent Javascript:第4章2行2列テーブルの抽出

function hasEvent(event, entry) { 
    return entry.events.indexOf(event) != -1; 
} 

function tableFor(event, journal) { 
    var table = [0, 0, 0, 0]; 
    for (var i = 0; i < journal.length; i++) { 
    var entry = journal[i], index = 0; 
    if (hasEvent(event, entry)) index += 1; 
    if (entry.squirrel) index += 2; 
    table[index] += 1; 
    } 
    return table; 
} 

console.log(tableFor("pizza", JOURNAL)); 
// → [76, 9, 4, 1] 

ジャーナルに切り替えると、すべて0が生成されます。私は、それ自体がジャーナルとも呼ばれるが小文字であるという事実と関係があると信じています。

コーディングに最適なフォーマットを実行しようとすると、同じ名前を共有しないようにパラメータや変数の名前を変更する方が良いでしょうか?たとえば、 "JOURNAL"変数の名前をjacquesJournalに変更するほうがよいでしょうか?

***編集:あなたの質問に答えるために、ジャーナルの元の変数はコードに記載されていません。しかし、それは以前に次のコード行で、以前の章で述べている:

var journal = []; 

function addEntry(events, didITurnIntoASquirrel) { 
    journal.push({ 
    events: events, 
    squirrel: didITurnIntoASquirrel 
    }); 
} 

上記のコード行に基づいて、私はその雑誌はすべて小文字だろうと想像しますか?私はちょうど元のコード行(私の編集前)の最後の行の2番目に使用されたジャーナルは大文字で宣言されていたと仮定する必要がありますか?

+0

ジャーナル変数の値を指定できますか?それは問題ではありません –

+0

まあ、それは重要です。小文字のジャーナルは、tableFor関数に渡されるパラメータの名前です。大文字のJOURNALは、ここに掲載されたコードの外に宣言された変数です。 – jmcgui05

+0

'JOURNAL'と' journal'の値は何ですか? – Vivick

答えて

0

あなたの提案する最良の方法は、私が行く方法です。私がコメントしたように、大文字のJOURNALは投稿したコードの外で宣言された変数であり、小文字のジャーナルは関数に渡されるパラメータのプレースホルダです。例:

var num = 10; 

var multiple = function (randomNum) { 
    return randomNum * 2; 
} 

multiple(num); //>> would work as expected but throw an error of undefined if I passed in NUM instead 

私は、その変数が定義されていないと結果は常に小文字の雑誌のための0のだろうとあなたのコードを見て、想像。

関連する問題