Каков Ваш любимый способ протестировать отрывки кода JavaScript?

Представьте себе:

result = []
pick(7, result, 4)

Этот код делает то, что при первом вызове он устанавливает ваше наименьшее число равным 0. Итак, в этот момент у вас есть smallest=0, n=7, to_pick=4. С этого момента у вас будет:

1- Ваш код входит в цикл, ваш пустой список будет добавлять наименьшее значение.

2- После этого функция будет вызываться рекурсивно, на этот раз ваше значение to_picked уменьшилось на единицу.

3- Ваше текущее наименьшее значение будет предыдущим наименьшим + 1, и снова вы перейдете ко 2-й строке.

4- После того, как вы достигнете конечного условия, ваш список будет напечатан. Первый раз будет [0,1,2,3]. Вы вернетесь из последней рекурсивной функции и перейдете к следующей строке.

5- На этот раз всплывет последний элемент. Итак, ваш список будет [0,1,2].

6- Вы идете на шаг дальше в цикле, на этот раз ваше следующее значение будет наименьшим + 1, а наименьшее значение было 3. Это будет добавлено, поэтому ваш список будет [0,1 , 2,4].

Редактировать: поэтому я обнаружил, что ваша главная проблема в том, что вы не можете понять, как return работает в рекурсивных функциях. Представьте, что у вас есть нерекурсивные функции, подобные этим:

def foo(A):
   return A
def bar(B):
   result = foo(B)
   return result

Здесь, в функции bar после того, как функция foo завершит свою работу, она вернется к предыдущей области действия, которая является областью действия функции bar и будет выполнена следующая строка return result.

Логика одинакова в рекурсивных функциях, разница в том, что вы вызываете одну и ту же функцию снова и снова. После того, как вы достигнете конечного условия, вы вернетесь к предыдущей области, пока снова не достигнете конечного условия. И это действие будет повторяться до такой степени, что вы достигнете всех возможных окончательных условий.

Итак, в вашем случае, когда вы впервые достигнете финального условия, у вас будет:

n=7, picked = [0,1,2], smallest = 2, n = 1

после того, как вы вернетесь из финального условия, вы выбрали массив будет [0,1,2,3], и код выполнит следующую строку. который будет picked.pop(). Таким образом, вы снова получите picked = [0,1,2], но на этот раз вы достигли последней строки цикла.

Так что в следующий раз ваше значение next будет обновлено с помощью smallest + 1 или 4, и снова это будет повторяться до тех пор, пока ваш цикл не достигнет своего конца. и вы снова получите [0,1,2].

После окончания цикла ваша функция вернется к предыдущей области видимости. На этот раз появится [0,1,2], и вы получите [0,1], и процесс повторяется. [Тысяча сто тридцать два]

7
задан Wadih M. 13 March 2009 в 13:43
поделиться

7 ответов

6
ответ дан 6 December 2019 в 07:08
поделиться

Можно использовать JSBin для тестирования отрывков кода с отрывками HTML и некоторых js платформ.

7
ответ дан 6 December 2019 в 07:08
поделиться

Я использую Firebug для в значительной степени всего JavaScript.

3
ответ дан 6 December 2019 в 07:08
поделиться

Я использую Firebug безусловно большинство раз.
Иначе я использую addressbar или просто добавление кнопки или ссылки на странице.

3
ответ дан 6 December 2019 в 07:08
поделиться

Если Вы хотите отладить и запустить JavaScript на лету на IE, Вы можете alos давать Debugbar попытку. Это работает отлично.

1
ответ дан 6 December 2019 в 07:08
поделиться

Я использую tryit.asp на тексте ссылки на w3school, поскольку я обычно проверяю свой HTML с тем сайтом так или иначе. Это также позволяет мне пробовать изменения, прежде чем я перейду в далеко.

1
ответ дан 6 December 2019 в 07:08
поделиться

Для тестирования маленьких сценариев через различные браузеры у меня есть файл HTML, лежащий, вокруг которого просто содержит

<pre><script>
</script></pre>

Вход сделан через document.writeln().

0
ответ дан 6 December 2019 в 07:08
поделиться
Другие вопросы по тегам:

Похожие вопросы: