2015-08-10 3 views
1

Я получил этот код от кодовой игры, и мне не хватает терминов, чтобы Google это то, что на самом деле делает этот код. То, что делает эта функция, состоит в том, чтобы получить сумму простого числа между двумя числами, переданными параметру (a, b).Для условия цикла и окончательного выражения

Вот рабочий код ..

function Prime_sum(a, b){ 
    for(s=0; b>=a; s += b--*!c) 
     for(c=b-1; b%c--;); 
    return s 
} 

И он хлопает меня некоторые вопросы, как;

  1. В чем разница между использованием 's = 0' вместо 'var s = 0'?
  2. Что это такое s + = b - *! C do? Не следует ли это вызывать ошибку с c не был объявлен?
  3. Если вы удалите последнюю полуточку во втором цикле, это больше не будет работать. Почему это?
  4. Если вы видите 'b> = a' в первом цикле, в какой части, которая делает 'b < a', что заставляет концы заканчиваться?

Edit: Игнорировать мои вопросы и объяснить мне, что этот код на самом деле делает в порядке.

Извините, если заголовок не установлен правильно как мой вопрос.

+0

За # 1, [Какова функция ключевого слова var и когда его использовать (или опустить)?] (Http://stackoverflow.com/questions/1470488/what-is-the-function-of -the-var-keyword-and-when-to-use-it-or-omit-it) –

+0

@JonathanLonowski Мне просто пришлось читать разные темы, кроме ваших, но отвечает тем же .. Спасибо в любом случае :) – choz

+0

# 3 Когда вы используете цикл for, он должен зацикливать что-то вроде блока кода, ";" в конце означает, что он просто петляет пустой блок afaik. (В вашем случае, забрав его, он процитирует «возврат s», который не будет работать) –

ответ

2

Я буду стрелять!

  1. S = 0 делает s глобальной переменной
  2. Посмотрите на него, как (В-) * с // с: истина = 1, ложь = 0
  3. отсутствующий точка с запятой будет съедать заявление ниже его и сделать его частью второй петли

Надежда, что помогает.

+0

Спасибо, я только что добавил 4-е, если вы не возражаете :) – choz

+0

b-- уменьшает b на один, поэтому это в конечном итоге приведет к тому, что b beautifulcoder

0

4-й является Если вы видите 'b> = a' в первом цикле, в какой части, которая делает 'b < a', что делает концы цикла?

его

s += b--*!c 

так каждый раз, когда б уменьшается на 1, которые делают это условие выполнить.

+0

О, не видел этого. Но это оставляет мне еще один вопрос, когда c не был объявлен ранее.Но я думаю, что мне просто нужно проследить его и узнать больше от этого js. Спасибо btw – choz

+0

Поскольку c не был объявлен ранее, не должен ли он выкидывать ошибку? Я отложил его, и это породило мне ошибку. – choz

+0

Нет, он не должен вызывать ошибку своей глобальной переменной. поэтому в первый раз это будет неопределенным, когда вы используете! оператор с undefined возвращает false, а когда вы умножаете значение false на число, оно будет давать 0, поэтому первый выход равен 0 для s + = b - *! c –

Смежные вопросы