Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Completed Chapter 03 Simple Conditions #12

Merged
merged 26 commits into from
Apr 27, 2018
Merged

Conversation

iarnaudov
Copy link

Всичко е готово, без линковете за Judge, защото контеста все още не е активен.

Copy link
Contributor

@JulietaAtanasova JulietaAtanasova left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Използвай "===" за сравнение в картинките.


## Живот на променлива

Всяка една променлива си има обхват, в който съществува, наречен **variable scope**. Този обхват уточнява къде една променлива може да бъде използвана. В езика JavaScript областта, в която една променлива съществува, започва от реда, на който сме я **дефинирали** и завършва до първата затваряща къдрава скоба **}** (на метода, на **`if` конструкцията** и т.н.). За това е важно да знаем, че **всяка променлива, дефинирана вътре в тялото на `if`, няма да бъде достъпна извън него**, освен ако не сме я дефинирали по-нагоре в кода.
Всяка една променлива си има обхват, в който съществува, наречен **variable scope**. Този обхват уточнява къде една променлива може да бъде използвана. В езика JavaScript областта, в която една променлива съществува, започва от реда, на който сме я **дефинирали** и завършва до първата затваряща къдрава скоба **}** (на функцията, на **`if` конструкцията** и т.н.). За това е важно да знаем, че **всяка променлива, дефинирана вътре в тялото на `if`, няма да бъде достъпна извън него**, освен ако не сме я дефинирали по-нагоре в кода.
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Не е ли добре да се добави малко информация за разликата между var и let?

Copy link
Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

  • Благодаря за посочването на пропуските в картинките. Вече са оправени.

  • За разликата между var и let мисля, че би било по-удачно подробна информация да бъде добавена в първа или максимално втора глава, при първоначалното дефиниране и използване на променливи. Затова тук би било излишно, за да се избегне повтаряемост.

Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

  • Ако смяташ за неудачно в тази глава да обясняваш разликата между var и let, то поне посочи за кой тип променлива става въпрос.
  • За картинките - на някои места е използван Number() вместо parseInt()/parseFloat(). Струва ми се и че не е използвана правилната светла тема на Visual Studio Code - функциите са оцветени в различен цвят.

Copy link
Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Проверих и наистина се оказа, че съм използвал Light+, вместо Light.
Картинките ще бъдат коригирани да са със другата тема и с правилното парсване.

Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

В лекциите мисля, че е използвано парсването с Number(). Взето ли е решение кое парстване да се използва в цялата книга?

Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

@iarnaudov мисля, че в главата където се обясняват променливите няма как да се обясни за scopes, защото там нямам как да дадеш нормален пример (не е взето нито if, нито for...). Може би там трябва да се обясни, че има две ключови думи за деклариране, но тук да се даде точната разлика между двете.

Copy link
Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

  • @KristianMariyanov за парсването, не само тук, а и в друг Pull Request бяха препоръчали да се използва parseInt()/parseFloat(), затова го промених навсякъде.
  • Добавих текст и картинка пример за разликите между var и let .

Copy link
Contributor

@paveldk paveldk left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

  • трябва да се оправи форматирането на кода в картинките
  • да се махне използването на var от картинките и от текста
  • линковете към judge системата са грешни
  • дебъгването се обеснява в друга глава. може би трябва да отпадне от едно от 2те места


При сравнение резултатът е булева стойност – **`true`** или **`false`**, в зависимост от това дали резултатът от сравнението е истина или лъжа.

Важно е да се отбележи, че в **JavaScript** се използват и още един вид оператори за **сравнение** **`==`** и **различие** **`!=`**. Прилагането им без задълбочено разбиране води до проблеми и неочаквани резултати, затова няма да ги разглеждаме на този етап от нашата подготовка.

Повече информация за разликите между двата вида оператори за сравнение и различие можете да получите от тук: https://www.w3schools.com/js/js_comparisons.asp
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

по скоро бих дал линк към mdn, като по - кадърен източник на информация https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Operators/Comparison_Operators

Copy link
Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

  • done


## Живот на променлива

Всяка една променлива си има обхват, в който съществува, наречен **variable scope**. Този обхват уточнява къде една променлива може да бъде използвана. В езика JavaScript областта, в която една променлива съществува, започва от реда, на който сме я **дефинирали** и завършва до първата затваряща къдрава скоба **}** (на метода, на **`if` конструкцията** и т.н.). За това е важно да знаем, че **всяка променлива, дефинирана вътре в тялото на `if`, няма да бъде достъпна извън него**, освен ако не сме я дефинирали по-нагоре в кода.
Всяка една променлива си има обхват, в който съществува, наречен **variable scope**. Този обхват уточнява къде една променлива може да бъде използвана. В езикът JavaScript съществуват **два начина** за инициализиране на променливи. Чрез иползването на ключовата дума **`var`** или **`let`**. Важно е да се отбележи разликата между тях, за да избегнем нежелани резултати при създаването на нашите функции. Обхватът на променливите, инициализирани чрез ключовата дума **`var`** е **глобален за цялата функция**. Това означава, че променливите **могат да бъдат достъпвани след дефинирането им, независимо от това в коя част на нашия код са били декларирани**. При използването на ключовата дума **`let`**, животът на променливата започва от реда, в който сме я **дефинирали** и завършва до първата затваряща къдрава скоба **}** (на функцията, на **`if` конструкцията** и т.н.). За това е важно да знаем, че **всяка променлива, инициализирана вътре в тялото на `if`, няма да бъде достъпна извън него**, освен ако не сме я дефинирали по-нагоре в кода.
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

с var могат да бъдат използвани и преди дефинирането им.

  • важно е да се уточни за примера с if че става въпрос ако сме я декларирали с let
  • може да се добави и другият начин за дефиниране - const
  • добре е да се наблегне, че var е остарял и е добре да се избягва употребата.

Copy link
Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

  • done


В примера по-долу, на последния ред, на който се опитваме да отпечатаме променливата **`salary`**, която е дефинирана в **`if` конструкцията**, ще получим **грешка**, защото нямаме достъп до нея.
В примера по-долу, на последните редове, ще се опитаме да извикаме дефинираните променливи. Ще успеем да отпечатаме **`myMoney`**, защото е инициализирана в началото на нашата функция, преди **`if` конструкцията**, което я прави **достъпна навсякъде**. Също така ще е възможно да принтираме и **`salary`**, защото въпреки, че е декларирана в **`if`**, тя има характер на **глобална променлива** (понеже е дефинирана с **`var`**) и може да бъде **използвана навсякъде в обхвата на функцията**. При опитът за отпечатването на **`bonus`**, която е инициализирана в **`if` конструкцията**, ще получим **грешка**, тъй като животът на тази променлива завършва до първата затваряща къдрава скоба **}** на **`if`**.
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

определението за глобална променлива не е много точно. все пак може да се обясни какво представляват и глобалните променливи

Copy link
Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

  • done

Copy link
Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

  • Може ли малко повече информация за форматирането на картинките. Какво точно не е наред?
  • Използването на var в картинките и текста е само на едно място, за да се обясни разликата между let и var (поискано от екипа)
  • Линковете към Judge ще бъдат оправени, когато бъде качена инстанцията за упражненията на книгата
  • Дебъгването е добавено, защото включено в C# в тази глава. Трябва да се вземе решение от екипа дали да остане в тази глава, или ще бъде обяснено другаде.

Благодаря за обстойния преглед на темата.

@vncpetrov
Copy link
Contributor

На места има разлика в размера на кода в картинките.

@vncpetrov
Copy link
Contributor

Трябва да се оправи форматирането на кода в картинките. Трудно се чете, защото няма нито един празен ред.

@nakov nakov dismissed paveldk’s stale review April 27, 2018 16:18

fixed by Venci and team

Copy link
Contributor

@nakov nakov left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Ready for merge

Copy link
Contributor

@nakov nakov left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Ready for merge

@nakov nakov merged commit e782b8f into master Apr 27, 2018
@nakov nakov deleted the chapter-03-simple-conditions branch June 21, 2019 21:34
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

6 participants