From 9307cde9d5a9979b558a9041230ff68f5a69d8ff Mon Sep 17 00:00:00 2001 From: Gasim Gasimzada Date: Sat, 15 Feb 2020 12:24:08 +0400 Subject: [PATCH 1/8] Translate Variables page until Uppercase constants --- 1-js/02-first-steps/04-variables/article.md | 176 ++++++++++---------- 1 file changed, 88 insertions(+), 88 deletions(-) diff --git a/1-js/02-first-steps/04-variables/article.md b/1-js/02-first-steps/04-variables/article.md index 6d680b3b0..ed8ebc2f0 100644 --- a/1-js/02-first-steps/04-variables/article.md +++ b/1-js/02-first-steps/04-variables/article.md @@ -1,254 +1,254 @@ -# Variables +# Dəyişənlər -Most of the time, a JavaScript application needs to work with information. Here are two examples: -1. An online shop -- the information might include goods being sold and a shopping cart. -2. A chat application -- the information might include users, messages, and much more. +Çox vaxt JavaScript applikasiyalarının məlumatlar ilə işləmələri lazımdır. Məsələn: +1. onlayn mağaza applikasiyasında satılan mallar və alış-veriş səbəti haqqında məlumatlar lazımdır. +2. çat applikasiyasında isitfadəçilər, ismarıclar və başqa maddələr haqqında məlumatlar lazımdır. -Variables are used to store this information. +Məlumatları saxlamaq üçün dəyişənlərdən istifadə edilir. -## A variable +## Dəyişən -A [variable](https://en.wikipedia.org/wiki/Variable_(computer_science)) is a "named storage" for data. We can use variables to store goodies, visitors, and other data. +[Dəyişən](https://en.wikipedia.org/wiki/Variable_(computer_science)), məlumat üçün üçün "adlı saxlama yeridir." Dəyişənlər ilə mağaza malları, applikasiyaya ziyarət edənlər və digər məlumatları saxlamaq mümkündür. -To create a variable in JavaScript, use the `let` keyword. +JavaScript-də dəyişən yaratmaq üçün `let` açar sözündən istifadə edin. -The statement below creates (in other words: *declares*) a variable with the name "message": +Aşağıdakı ifadədə "message" adlı dəyişən yaradılır (digər sözlə, *bildirilir* ingiliscə, *declare*): ```js let message; ``` -Now, we can put some data into it by using the assignment operator `=`: +İndi, biz `=` təyinat operatorundan istifadə edərək bu dəyişənə məlumat təyin edə bilərik: ```js let message; *!* -message = 'Hello'; // store the string +message = 'Salam'; // Mətni saxla */!* ``` -The string is now saved into the memory area associated with the variable. We can access it using the variable name: +İndi, mətn dəyəri dəyişənə bağlı olan yaddaş sahəsində saxlanılır. Biz, dəyişənin adından istifadə edərək bu dəyəri oxuya bilərik: ```js run let message; -message = 'Hello!'; +message = 'Salam!'; *!* -alert(message); // shows the variable content +alert(message); // dəyişənin kontentini göstər */!* ``` -To be concise, we can combine the variable declaration and assignment into a single line: +Yığcam kod yazmaq üçün biz dəyişənin yaranmasını və təyinatını bir sətirdə birləşdirə bilərik: ```js run -let message = 'Hello!'; // define the variable and assign the value +let message = 'Salam!'; // Dəyişəni müəyyənləşdir və dəyəri təyin et -alert(message); // Hello! +alert(message); // Salam! ``` -We can also declare multiple variables in one line: +Biz, həmçinin bir neçə dəyişəni eyni sətirdə müəyyənləşdirə bilərik: ```js no-beautify -let user = 'John', age = 25, message = 'Hello'; +let user = 'Orxan', age = 25, message = 'Salam'; ``` -That might seem shorter, but we don't recommend it. For the sake of better readability, please use a single line per variable. +Bunun daha qısa olmasına baxmayaraq biz belə kod yazmağı tövsiyyə etmirik. Oxunaqlığı çoxaltmaq üçün hər dəyişən üçün ayrı sətir işlədin. -The multiline variant is a bit longer, but easier to read: +Çox sətirli variantın biraz uzun olmasına baxmayaraq bunu oxumaq daha asandır: ```js -let user = 'John'; +let user = 'Orxan'; let age = 25; -let message = 'Hello'; +let message = 'Salam'; ``` -Some people also define multiple variables in this multiline style: +Bəzi proqramçılar bir neçə dəyişəni aşağıdakı formada: ```js no-beautify -let user = 'John', +let user = 'Orxan', age = 25, - message = 'Hello'; + message = 'Salam'; ``` -...Or even in the "comma-first" style: +...vı ya "vergül-birinci" stilində də müəyyənləşdirirlər: ```js no-beautify -let user = 'John' +let user = 'Orxan' , age = 25 - , message = 'Hello'; + , message = 'Salam'; ``` -Technically, all these variants do the same thing. So, it's a matter of personal taste and aesthetics. +Texniki olaraq yuxarıdakı bütün variantlar eyni nəticəni verəcək. Bu səbəbdən, burada vacib olan proqramçıların şəxsi zövqüdür. -````smart header="`var` instead of `let`" -In older scripts, you may also find another keyword: `var` instead of `let`: +````smart header="`let` əvəzinə `var`" +Siz, köhnə skriptlərdə `let` əvəzinə `var` açar sözünün işlədildiyini görə bilərsiniz: ```js -*!*var*/!* message = 'Hello'; +*!*var*/!* message = 'Salam'; ``` -The `var` keyword is *almost* the same as `let`. It also declares a variable, but in a slightly different, "old-school" way. +`var` dəyişəni *az qala* `let` ilə eynidir. Bu açar sözü dəyişənin daha "köhnə" üsul ilə müəyyənləşdirir. -There are subtle differences between `let` and `var`, but they do not matter for us yet. We'll cover them in detail in the chapter . +`let` və `var` arasında olan hiss edilməyən fərqlər var. Lakin, indi bu fərqlər bizi maralandırmır. Biz, bu fərqlər haqqında bölməsində detallı danışacağıq. ```` -## A real-life analogy +## Real dünyada analogiya -We can easily grasp the concept of a "variable" if we imagine it as a "box" for data, with a uniquely-named sticker on it. +"Dəyişən" konsepsiyasını yaxşı anlamaq üçün bunun, üzərində unikal adlı etiketi olan məlumatlar "qutusu" olduğunu fikirləşin. -For instance, the variable `message` can be imagined as a box labeled `"message"` with the value `"Hello!"` in it: +Məsələn, `message` dəyişəni daxilində "Salam!" dəyəri olan və `"message"` adı ilə etiketlənən qutudur: ![](variable.svg) -We can put any value in the box. +Biz qutuda istənilən dəyəri yerləşdirə bilərik. -We can also change it as many times as we want: +Əlavə olaraq, biz bu dəyəri istədiyimiz qədər dəyişə bilərik: ```js run let message; -message = 'Hello!'; +message = 'Salam!'; -message = 'World!'; // value changed +message = 'Dünya!'; // dəyər dəyişdi alert(message); ``` -When the value is changed, the old data is removed from the variable: +Dəyər dəyişdikdə dəyişəndə olan köhnə məlumat silinir: ![](variable-change.svg) -We can also declare two variables and copy data from one into the other. +Əlavə olaraq, biz iki dəyişən yaradıb birinin məlumatını o birisinə kopiyalaya bilərik. ```js run -let hello = 'Hello world!'; +let hello = 'Salam dünya!'; let message; *!* -// copy 'Hello world' from hello into message +// 'Salam dünya' dəyərini hello dəyişənindən message dəyişəninə kopiyala message = hello; */!* -// now two variables hold the same data -alert(hello); // Hello world! -alert(message); // Hello world! +// indi, hər iki dəyişəndə eyni dəyər saxlanılır +alert(hello); // Salam dünya! +alert(message); // Salam dünya! ``` -```smart header="Functional languages" -It's interesting to note that there exist [functional](https://en.wikipedia.org/wiki/Functional_programming) programming languages, like [Scala](http://www.scala-lang.org/) or [Erlang](http://www.erlang.org/) that forbid changing variable values. +```smart header="Funksional dillər" +Nəzərinizə çatdırmaq istəyirik ki, [Scala](http://www.scala-lang.org/) və [Erlang](http://www.erlang.org/) kimi [funksional](https://en.wikipedia.org/wiki/Functional_programming) proqramlaşdırma dillərində dəyişənin dəyişilməsinə icazə verilmir. -In such languages, once the value is stored "in the box", it's there forever. If we need to store something else, the language forces us to create a new box (declare a new variable). We can't reuse the old one. +Bu dillərdə, dəyər "qutuya" yerləşdirildikdən sonra orada ömürlük qalır. Fərqli məlumat saxlamaq istədikdə proqramlaşdırma dili bizə yeni qutu (dəyişənin yaradılması) yaratmağa məcbur edir. Biz köhnə dəyəri yenidən təyin edə bilmirik. -Though it may seem a little odd at first sight, these languages are quite capable of serious development. More than that, there are areas like parallel computations where this limitation confers certain benefits. Studying such a language (even if you're not planning to use it soon) is recommended to broaden the mind. +İlk baxışda bunun biraz qəribə olmasına baxmayaraq bu dillərdə çox ciddi təkmilləşdirmə etmək mümkündür. Bundan əlavə, paralel hesablamalar kimi bəzi tapşırıqlarda bu məhdudiyyətin olmasının faydası var. Fikrinizi genişləndirmək üçün bu formalı dili öyrənməyi (hətta bunu işlətməyi planlaşdırmasanız belə) tövsiyyə edirik. ``` -## Variable naming [#variable-naming] +## Dəyişənlərin adlandırılması [#variable-naming] -There are two limitations on variable names in JavaScript: +JavaScript-də dəyişənlərin adlandırılmasında iki məhdudiyyət var: -1. The name must contain only letters, digits, or the symbols `$` and `_`. -2. The first character must not be a digit. +1. Dəyişən adında yalnız hərflər, rəqəmlər və ya `$` və `_` kimi simvollar ola bilər. +2. Dəyişən adının ilk hərfi rəqəm ola bilməz. -Examples of valid names: +Etibarlı adlar üçün nümunələr: ```js let userName; let test123; ``` -When the name contains multiple words, [camelCase](https://en.wikipedia.org/wiki/CamelCase) is commonly used. That is: words go one after another, each word except first starting with a capital letter: `myVeryLongName`. +Dəyişən adı bir neçə sözdən ibarət olduqda çox zaman [camelCase](https://en.wikipedia.org/wiki/CamelCase) formatından istifadə olunur. Bu formatında ilk sözdən başqa bütün sözlər böyük hərf ilə başlayır: `myVeryLongName`. -What's interesting -- the dollar sign `'$'` and the underscore `'_'` can also be used in names. They are regular symbols, just like letters, without any special meaning. +Dəyişən adlarında dollar (`'$'`) altdan xətt (`'_'`) işarələrinin də işlədilə bilməsi maraqlıdır. Bu simvollar, hərflər kimi xüsusi mənası olmayan sadə simvollardır. -These names are valid: +Aşağıdakı dəyişən adlar etibarlıdır: ```js run untrusted -let $ = 1; // declared a variable with the name "$" -let _ = 2; // and now a variable with the name "_" +let $ = 1; // "$" adlı dəyişən təyin et +let _ = 2; // "_" adlı dəyişən təyin et alert($ + _); // 3 ``` -Examples of incorrect variable names: +Səhv məlumat adlarının nümunələri: ```js no-beautify -let 1a; // cannot start with a digit +let 1a; // dəyişən adı rəqəm ilə başlaya bilməz -let my-name; // hyphens '-' aren't allowed in the name +let my-name; // dəyişən adında '-' kimi simvollar ola bilməz ``` ```smart header="Case matters" -Variables named `apple` and `AppLE` are two different variables. +`apple` və `AppLE` adları fərqli dəyişənlərə istinad edir. ``` -````smart header="Non-Latin letters are allowed, but not recommended" -It is possible to use any language, including cyrillic letters or even hieroglyphs, like this: +````smart header="Latın adlarını işlətmək olar, amma tövsiyyə edilmir" +Kiril hərfləri və iyeroqlif daxil olmaqla istənilən dildə olan hərfləri işlətmək olar: ```js let имя = '...'; let 我 = '...'; ``` -Technically, there is no error here, such names are allowed, but there is an international tradition to use English in variable names. Even if we're writing a small script, it may have a long life ahead. People from other countries may need to read it some time. +Texniki olaraq, burada heç bir xəta yoxdur. Lakin, beynəlxalq ənənəyə görə dəyişən adları İngiliscə yazılır. Kiçik skript yazsaq belə bu skriptin uzun həyatı ola bilər. Digər ölkələrdə olan proqramistlər bu skripti oxumalı ola bilərlər. ```` -````warn header="Reserved names" -There is a [list of reserved words](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Lexical_grammar#Keywords), which cannot be used as variable names because they are used by the language itself. +````warn header="Qorunan adlar" +JavaScript dilində işlədilən bəzi [qorunan sözləri](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Lexical_grammar#Keywords) dəyişən adı kimi işlətmək olmaz. -For example: `let`, `class`, `return`, and `function` are reserved. +Məsələn: `let`, `class`, `return` və `function` sözləri qorunur. -The code below gives a syntax error: +Aşağıdakı kodda sintaksis xətası baş verəcək: ```js run no-beautify -let let = 5; // can't name a variable "let", error! -let return = 5; // also can't name it "return", error! +let let = 5; // xəta! "let" adlı dəyişən işlətmək olmaz! +let return = 5; // xəta! "return" adlı dəyişən işlətmək olmaz! ``` ```` -````warn header="An assignment without `use strict`" +````warn header="`use strict`-siz təyinat" -Normally, we need to define a variable before using it. But in the old times, it was technically possible to create a variable by a mere assignment of the value without using `let`. This still works now if we don't put `use strict` in our scripts to maintain compatibility with old scripts. +Normalda, dəyişəni işlətməmişdən öncə bu dəyişəni yaratmaq lazımdır. Lakin, keçmişdə dəyişəni `let` kimi açar sözü işlətmədən müəyyənləşdirmək mümkün idi. Skriptlərə `use strict` əlavə etmədikdə bu formada olan kodlar işləyəcək. ```js run no-strict -// note: no "use strict" in this example +// qeyd: bu nümunədə "use strict" işlədilmir -num = 5; // the variable "num" is created if it didn't exist +num = 5; // "num" dəyişəni olmadıqda dəyişən yaranacaq alert(num); // 5 ``` -This is a bad practice and would cause an error in strict mode: +Bunun pis praktika olduğundan bu sizə strikt rejimində xəta verəcək: ```js "use strict"; *!* -num = 5; // error: num is not defined +num = 5; // xəta: num təyin edilməyib */!* ``` ```` -## Constants +## Sabit dəyişənlər -To declare a constant (unchanging) variable, use `const` instead of `let`: +Sabit (dəyişməyən) dəyişən yaratmaq istəyirsinizsə, `let` əvəzinə `const` işlədin: ```js const myBirthday = '18.04.1982'; ``` -Variables declared using `const` are called "constants". They cannot be reassigned. An attempt to do so would cause an error: +`const` ilə yaranan dəyişənlər "sabit dəyişənlər" adlandırılır. Bu dəyişənləri yenidən təyin etmək mümkün deyil. Dəyişənin dəyərini dəyişmək istədikdə xəta baş verəcək: ```js run const myBirthday = '18.04.1982'; -myBirthday = '01.01.2001'; // error, can't reassign the constant! +myBirthday = '01.01.2001'; // xəta, sabit dəyişəni dəyişmək olmaz! ``` -When a programmer is sure that a variable will never change, they can declare it with `const` to guarantee and clearly communicate that fact to everyone. +Proqramçı dəyişənin heç vaxt dəyişməyəcəyindən əmin olduqda dəyişəni `const` ilə təyin edərək bu dəyişənin dəyişməyəcəyini siğortalayıb digər proqramçılara bildirə bilər. -### Uppercase constants +### Böyük hərf ilə yazılmış sabit dəyişənlər There is a widespread practice to use constants as aliases for difficult-to-remember values that are known prior to execution. From 1445d51cceed37ab0b83e81c98c306881fb96390 Mon Sep 17 00:00:00 2001 From: Gasim Gasimzada Date: Sat, 15 Feb 2020 15:51:32 +0400 Subject: [PATCH 2/8] Translate rest of variables page --- .../1-hello-variables/solution.md | 8 +- .../04-variables/1-hello-variables/task.md | 10 +-- .../2-declare-variables/solution.md | 18 ++--- .../04-variables/2-declare-variables/task.md | 6 +- .../3-uppercast-constant/solution.md | 6 +- .../04-variables/3-uppercast-constant/task.md | 12 +-- 1-js/02-first-steps/04-variables/article.md | 76 +++++++++---------- 7 files changed, 68 insertions(+), 68 deletions(-) diff --git a/1-js/02-first-steps/04-variables/1-hello-variables/solution.md b/1-js/02-first-steps/04-variables/1-hello-variables/solution.md index 9249e1c84..ce15408c8 100644 --- a/1-js/02-first-steps/04-variables/1-hello-variables/solution.md +++ b/1-js/02-first-steps/04-variables/1-hello-variables/solution.md @@ -1,12 +1,12 @@ -In the code below, each line corresponds to the item in the task list. +Aşağıdakı kodda olan hər sətir tapşıqıda olan hər maddəyə aiddir. ```js run -let admin, name; // can declare two variables at once +let admin, name; // eyni zamanda iki dəyişən yaratmaq mümkündür -name = "John"; +name = "Orxan"; admin = name; -alert( admin ); // "John" +alert( admin ); // "Orxan" ``` diff --git a/1-js/02-first-steps/04-variables/1-hello-variables/task.md b/1-js/02-first-steps/04-variables/1-hello-variables/task.md index 84f009e8c..dcd0966ee 100644 --- a/1-js/02-first-steps/04-variables/1-hello-variables/task.md +++ b/1-js/02-first-steps/04-variables/1-hello-variables/task.md @@ -2,9 +2,9 @@ importance: 2 --- -# Working with variables +# Dəyişənlər ilə işləmək -1. Declare two variables: `admin` and `name`. -2. Assign the value `"John"` to `name`. -3. Copy the value from `name` to `admin`. -4. Show the value of `admin` using `alert` (must output "John"). +1. İki dəyişən yaradın: `admin` və `name`. +2. `"Orxan"` dəyərini `name` dəyişəninə təyin edin. +3. `name` adını `admin` adına kopiyalayın. +4. `admin` dəyişəninin dəyərini `alert` ilə göstərin ("Orxan" göstərməlidir). diff --git a/1-js/02-first-steps/04-variables/2-declare-variables/solution.md b/1-js/02-first-steps/04-variables/2-declare-variables/solution.md index d56e54d28..22b7d7909 100644 --- a/1-js/02-first-steps/04-variables/2-declare-variables/solution.md +++ b/1-js/02-first-steps/04-variables/2-declare-variables/solution.md @@ -1,21 +1,21 @@ -## The variable for our planet +## Bizim planetimizin dəyişəni -That's simple: +Bu asandır: ```js -let ourPlanetName = "Earth"; +let ourPlanetName = "Yer"; ``` -Note, we could use a shorter name `planet`, but it might be not obvious what planet it refers to. It's nice to be more verbose. At least until the variable isNotTooLong. +Nəzərə alın ki, biz `planet` adından istifadə edə bilərdik. Lakin, bu ad ilə hansı planetdən danışdığımız bilinməyəcəkdi. Daha məlumatlı adlar yazmaq yaxşıdır. -## The name of the current visitor +## Cari ziyarətçinin adı ```js -let currentUserName = "John"; +let currentUserName = "Orxan"; ``` -Again, we could shorten that to `userName` if we know for sure that the user is current. +Biz bu dəyişənin həmişə cari istifadəçi haqqında olduğunu bilsəydik bu dəyişəni `userName` adlandıra bilərdik. -Modern editors and autocomplete make long variable names easy to write. Don't save on them. A name with 3 words in it is fine. +Modern redaktorlarda olan avtomatik tamamlayıcı qurğular ilə uzun adları yazmaq asanlaşır. Üç sözdən ibarət ad normaldır. -And if your editor does not have proper autocompletion, get [a new one](/code-editors). +Əgər redaktorununzda avtomatik tamamlayıcı qurğu yoxdursa, [yeni redaktor əldə edin](/code-editors). diff --git a/1-js/02-first-steps/04-variables/2-declare-variables/task.md b/1-js/02-first-steps/04-variables/2-declare-variables/task.md index f364badf4..e889cd7b7 100644 --- a/1-js/02-first-steps/04-variables/2-declare-variables/task.md +++ b/1-js/02-first-steps/04-variables/2-declare-variables/task.md @@ -2,7 +2,7 @@ importance: 3 --- -# Giving the right name +# Düzgün adın verilməsi -1. Create a variable with the name of our planet. How would you name such a variable? -2. Create a variable to store the name of a current visitor to a website. How would you name that variable? +1. Bizim planetimizin adında dəyişən yaradın. Bu dəyişəni necə adlandırardınız? +2. Veb səhifəyə daxil olan cari ziyarətçinin adını dəyişəndə saxlayın. Bu dəyişəni necə adlandırardınız? diff --git a/1-js/02-first-steps/04-variables/3-uppercast-constant/solution.md b/1-js/02-first-steps/04-variables/3-uppercast-constant/solution.md index acd643fde..e9894b069 100644 --- a/1-js/02-first-steps/04-variables/3-uppercast-constant/solution.md +++ b/1-js/02-first-steps/04-variables/3-uppercast-constant/solution.md @@ -1,5 +1,5 @@ -We generally use upper case for constants that are "hard-coded". Or, in other words, when the value is known prior to execution and directly written into the code. +Normalda, biz əl ilə yazılan sabit dəyişənləri böyük hərf ilə yazırıq. Digər sözlə, dəyişənin dəyəri skriptin icrasından öncə bilindikdə və kodda birbaşa yazıldıqda biz bu dəyişəni böyük hərf ilə yazırıq. -In this code, `birthday` is exactly like that. So we could use the upper case for it. +Bu kodda, `birthday` dəyişəninin bu formada olduğundan biz böyük hərfdən istifadə edə bilərik. -In contrast, `age` is evaluated in run-time. Today we have one age, a year after we'll have another one. It is constant in a sense that it does not change through the code execution. But it is a bit "less of a constant" than `birthday`: it is calculated, so we should keep the lower case for it. +Lakin, `age` dəyişəni icra zamanı hesablanır. Bugün bizdə bir yaş, bir il sonra isə fərqli yaş olacaq. Bu dəyişən kod icrası zamanı dəyişmir amma bu dəyişən hesablanır deyə `birthday`-dən daha "az sabitdir". Bu səbəbdən, bu dəyişənin adı böyük hərf ilə yazılmamalıdır. diff --git a/1-js/02-first-steps/04-variables/3-uppercast-constant/task.md b/1-js/02-first-steps/04-variables/3-uppercast-constant/task.md index 5fd18f90a..cdb859348 100644 --- a/1-js/02-first-steps/04-variables/3-uppercast-constant/task.md +++ b/1-js/02-first-steps/04-variables/3-uppercast-constant/task.md @@ -2,9 +2,9 @@ importance: 4 --- -# Uppercase const? +# Böyük hərf ilə const? -Examine the following code: +Aşağıdakı koda baxın: ```js const birthday = '18.04.1982'; @@ -12,13 +12,13 @@ const birthday = '18.04.1982'; const age = someCode(birthday); ``` -Here we have a constant `birthday` date and the `age` is calculated from `birthday` with the help of some code (it is not provided for shortness, and because details don't matter here). +Burada `birthday` adlı sabit zaman dəyişəni və `birthday`-dən hesablanan `age` sabit dəyişəni var (hesablama funksiyasının vacib olmadığından bu kodun tətbiq detalı göstərilməyib). -Would it be right to use upper case for `birthday`? For `age`? Or even for both? +`birthday` üçün böyük hərf işlətmək yaxşı fikirdir? Bəs `age` üçün? Bəs hər ikisi üçün? ```js -const BIRTHDAY = '18.04.1982'; // make uppercase? +const BIRTHDAY = '18.04.1982'; // böyük hərf ilə yazaq? -const AGE = someCode(BIRTHDAY); // make uppercase? +const AGE = someCode(BIRTHDAY); // böyük hərf ilə yazaq? ``` diff --git a/1-js/02-first-steps/04-variables/article.md b/1-js/02-first-steps/04-variables/article.md index ed8ebc2f0..71d6b40ca 100644 --- a/1-js/02-first-steps/04-variables/article.md +++ b/1-js/02-first-steps/04-variables/article.md @@ -250,11 +250,11 @@ Proqramçı dəyişənin heç vaxt dəyişməyəcəyindən əmin olduqda dəyiş ### Böyük hərf ilə yazılmış sabit dəyişənlər -There is a widespread practice to use constants as aliases for difficult-to-remember values that are known prior to execution. +Praktikada, çətin yadda qalan dəyərlər skript icra olunmamışdan öncə sabit dəyişələr ilə ləqəbləndirilir. -Such constants are named using capital letters and underscores. +Bu formalı sabit dəyişənlər böyük hərf və altdan xətt ilə adlandırılırlar. -For instance, let's make constants for colors in so-called "web" (hexadecimal) format: +Məsələn, gəlin "veb" (16-lı rəqəm) formatında olan rənglər üçün sabit dəyişənlər yaradaq: ```js run const COLOR_RED = "#F00"; @@ -262,69 +262,69 @@ const COLOR_GREEN = "#0F0"; const COLOR_BLUE = "#00F"; const COLOR_ORANGE = "#FF7F00"; -// ...when we need to pick a color +// ...rəngdən istifadə etdikdə let color = COLOR_ORANGE; alert(color); // #FF7F00 ``` -Benefits: +Faydaları: -- `COLOR_ORANGE` is much easier to remember than `"#FF7F00"`. -- It is much easier to mistype `"#FF7F00"` than `COLOR_ORANGE`. -- When reading the code, `COLOR_ORANGE` is much more meaningful than `#FF7F00`. +- `COLOR_ORANGE` dəyəri yadda saxlamaq `"#FF7F00"` dəyərini yadda saxlamaqdan daha asandır. +- `"#FF7F00"` dəyərində səhv etmək `COLOR_ORANGE` dəyərində səhv etməkdən daha asandır. +- Kodu oxuduqda `COLOR_ORANGE` dəyərinin mənası `#FF7F00` dəyərinin mənasından daha çoxdur. -When should we use capitals for a constant and when should we name it normally? Let's make that clear. +Sabit dəyişənləri nə zaman normal formada, nə zaman isə böyük hərflər ilə yazmaq lazımdır? Gəlin bunun açıqlamasını verək. -Being a "constant" just means that a variable's value never changes. But there are constants that are known prior to execution (like a hexadecimal value for red) and there are constants that are *calculated* in run-time, during the execution, but do not change after their initial assignment. +Dəyişənin "sabit" olması, bu dəyişənin heç vaxt dəyişməməsi deməkdir. Lakin, bəzi sabit dəyişənlər skript icra olunmamışdan öncə (qırmızı rəngin 16-lıq rəqəmi kimi) , bəziləri isə icra zamanı *hesablanır* və sabit qalır. -For instance: +Məsələn: ```js -const pageLoadTime = /* time taken by a webpage to load */; +const pageLoadTime = /* veb səhifənin yüklənməsinə xərclənən zaman */; ``` -The value of `pageLoadTime` is not known prior to the page load, so it's named normally. But it's still a constant because it doesn't change after assignment. +`pageLoadTime` dəyəri səhifə yüklənməmişdən öncə bilinmədiyindən bu, normal adlandırılır. Lakin, bu dəyər təyin edildikdən sonra dəyişmədiyindən sabit qalır. -In other words, capital-named constants are only used as aliases for "hard-coded" values. +Digər sözlə, böyük hərf ilə yazılan sabit dəyişənləri yalnız "əl ilə" yazılan dəyərlər üçün istifadə edin. -## Name things right +## Dəyişənləri düzgün adlandırın -Talking about variables, there's one more extremely important thing. +Dəyişənləri adlandırdıqda çox vacib məqam var. -A variable name should have a clean, obvious meaning, describing the data that it stores. +Dəyişən adının saxladığı məlumatı təsvir edən təmin və mənalı adı olmalıdır. -Variable naming is one of the most important and complex skills in programming. A quick glance at variable names can reveal which code was written by a beginner versus an experienced developer. +Dəyişənləri adlandırmaq proqramlaşdırmada çox vacib və mürəkkəb bacarıqlardan biridir. Dəyişənin adına baxdıqda kodun yenibaşlayan və ya təcrübəli proqramçının yazdığını bilmək mümkündür. -In a real project, most of the time is spent modifying and extending an existing code base rather than writing something completely separate from scratch. When we return to some code after doing something else for a while, it's much easier to find information that is well-labeled. Or, in other words, when the variables have good names. +Real layihədə işlədikdə vaxtın çoxu sıfırdan kod yazmaq əvəzinə mövcud kodu dəyişməyə və artırmağa gedir. Digər tapşırıqlardan kodunuza qayıtdıqda yaxşı adlandırılmış məlumatları tapmaq daha asandır. Digər sözlə dəyişənləri yaxşı adlandırmaq lazımdır. -Please spend time thinking about the right name for a variable before declaring it. Doing so will repay you handsomely. +Dəyişəni müəyyənləşdirməmişdən öncə yaxşı ad haqqında biraz fikirləşin. Bunu etdikdə faydasını görəcəksiniz. -Some good-to-follow rules are: +Bəzi əməl edə biləcəyiniz yaxşı qaydalar: -- Use human-readable names like `userName` or `shoppingCart`. -- Stay away from abbreviations or short names like `a`, `b`, `c`, unless you really know what you're doing. -- Make names maximally descriptive and concise. Examples of bad names are `data` and `value`. Such names say nothing. It's only okay to use them if the context of the code makes it exceptionally obvious which data or value the variable is referencing. -- Agree on terms within your team and in your own mind. If a site visitor is called a "user" then we should name related variables `currentUser` or `newUser` instead of `currentVisitor` or `newManInTown`. +- `userName` və ya `shoppingCart` kimi insanların başa düşə biləcəyi adlardan istifadə edin. +- Qısaldılmış adlardan və ya `a`, `b`, `c` kimi adlardan uzaq durun. +- Adları maksimal dərəcədə təsvirli və dəqiq edin. `data` və `value` kimi adlar pisdir. Bu adlar nəyin baş verdiyi haqqda heç nə təsvir etmir. Əgər kodun konteksti dəyişənin hansı məlumat və ya dəyərə istinad etdiyini göstərirsə, belə adlardan istifadə etmək olar. +- Komandanızda və beyninizdə terminlər haqqında razılığıa gəlin. Əgər sayt ziyatətçisi "user" adlanırsa, buna aid dəyişənləri `currentVisitor` və ya `newManInTown` adlandırmaq əvəzinə `currentUser` və ya `newUser` adlandırın. -Sounds simple? Indeed it is, but creating descriptive and concise variable names in practice is not. Go for it. +Sadə görünür? Bunun sadə görünməyinə baxmayaraq praktikada təsvirli və dəqiq dəyişən adları düzəltmək çətindir. -```smart header="Reuse or create?" -And the last note. There are some lazy programmers who, instead of declaring new variables, tend to reuse existing ones. +```smart header="Yenidən işlət yoxsa yarat?" +Bəzi avara proqramçılar yeni dəyişən yaratmaq əvəzinə mövcud dəyişəni istifadə etməyi sevirlər. -As a result, their variables are like boxes into which people throw different things without changing their stickers. What's inside the box now? Who knows? We need to come closer and check. +Nəticədə, bu dəyişənlər etiketi dəyişməyən, amma daxili dəyişən qutulara bənzəyirlər. Qutunun içində nəyin olduğunu heç kim bilmir. Bu səbəbdən, biz bu kodlara yaxından baxım yoxlamalıyıq. -Such programmers save a little bit on variable declaration but lose ten times more on debugging. +Bu proqramçılar dəyişən yaratmaqda az vaxt, amma debaq zamanı on dəfə çox vaxt xərcləyirlər. -An extra variable is good, not evil. +Yeni dəyişən yaratmaq pis deyil. -Modern JavaScript minifiers and browsers optimize code well enough, so it won't create performance issues. Using different variables for different values can even help the engine optimize your code. +Modern JavaScript minifikasiya edici qurğuları və brauzerlər kodu yaxşı optimallaşdırırlar. Bu səbəbdən, çox dəyişən yaratdıqda performans problemləri yaranmayacaq. Fərqli dəyərlər üçün fərqli dəyişənlər işlətdikdə JavaScript mühərriki kodunuzu daha da yaxşı optimizasiya edə bilər. ``` -## Summary +## Xülasə -We can declare variables to store data by using the `var`, `let`, or `const` keywords. +Dəyişənləri `var`, `let` və ya `const` açar sözləri ilə yaratmaq mümkündür. -- `let` -- is a modern variable declaration. -- `var` -- is an old-school variable declaration. Normally we don't use it at all, but we'll cover subtle differences from `let` in the chapter , just in case you need them. -- `const` -- is like `let`, but the value of the variable can't be changed. +- `let` -- modern dəyişən yaratmaq üçün işlədilir. +- `var` -- köhnə üsulda dəyişən yaratmaq üçün işlədilir. Normalda, biz bu dəyişəndən istifadə etmirik, amma bölməsində `let` və `var` arasında olan fərqlərdən danışacağıq. +- `const` -- `let` kimidir. Lakin, bununla yaranan dəyişənin dəyəri dəyişə bilməz. -Variables should be named in a way that allows us to easily understand what's inside them. +Dəyişənləri, təyin olunan dəyəri yaxşı başa salan adlar ilə adlandırmağı tövsiyyə edirik. From cc5c0abafee591b380baea9517631a261f30374b Mon Sep 17 00:00:00 2001 From: Eldar Shahmaliyev Date: Tue, 14 Jan 2025 17:28:37 +0400 Subject: [PATCH 3/8] Resolve issues --- .../04-variables/1-hello-variables/solution.md | 2 +- .../04-variables/2-declare-variables/solution.md | 4 ++-- .../02-first-steps/04-variables/2-declare-variables/task.md | 2 +- .../04-variables/3-uppercast-constant/solution.md | 6 +++--- 4 files changed, 7 insertions(+), 7 deletions(-) diff --git a/1-js/02-first-steps/04-variables/1-hello-variables/solution.md b/1-js/02-first-steps/04-variables/1-hello-variables/solution.md index ce15408c8..230a1710d 100644 --- a/1-js/02-first-steps/04-variables/1-hello-variables/solution.md +++ b/1-js/02-first-steps/04-variables/1-hello-variables/solution.md @@ -1,4 +1,4 @@ -Aşağıdakı kodda olan hər sətir tapşıqıda olan hər maddəyə aiddir. +Aşağıdakı kodda olan hər sətir tapşırıqda olan hər maddəyə aiddir. ```js run let admin, name; // eyni zamanda iki dəyişən yaratmaq mümkündür diff --git a/1-js/02-first-steps/04-variables/2-declare-variables/solution.md b/1-js/02-first-steps/04-variables/2-declare-variables/solution.md index 22b7d7909..9454860aa 100644 --- a/1-js/02-first-steps/04-variables/2-declare-variables/solution.md +++ b/1-js/02-first-steps/04-variables/2-declare-variables/solution.md @@ -6,7 +6,7 @@ Bu asandır: let ourPlanetName = "Yer"; ``` -Nəzərə alın ki, biz `planet` adından istifadə edə bilərdik. Lakin, bu ad ilə hansı planetdən danışdığımız bilinməyəcəkdi. Daha məlumatlı adlar yazmaq yaxşıdır. +Nəzərə alın ki, biz `planet` adından istifadə edə bilərdik. Lakin, bu ad ilə hansı planetdən danışdığımız bilinməyəcəkdir. Daha aydın adlar yazmaq yaxşıdır. ## Cari ziyarətçinin adı @@ -18,4 +18,4 @@ Biz bu dəyişənin həmişə cari istifadəçi haqqında olduğunu bilsəydik b Modern redaktorlarda olan avtomatik tamamlayıcı qurğular ilə uzun adları yazmaq asanlaşır. Üç sözdən ibarət ad normaldır. -Əgər redaktorununzda avtomatik tamamlayıcı qurğu yoxdursa, [yeni redaktor əldə edin](/code-editors). +Əgər redaktorunuzda avtomatik tamamlama xüsusiyyəti yoxdursa, [yeni redaktor əldə edin](/code-editors). diff --git a/1-js/02-first-steps/04-variables/2-declare-variables/task.md b/1-js/02-first-steps/04-variables/2-declare-variables/task.md index e889cd7b7..80522d5a2 100644 --- a/1-js/02-first-steps/04-variables/2-declare-variables/task.md +++ b/1-js/02-first-steps/04-variables/2-declare-variables/task.md @@ -4,5 +4,5 @@ importance: 3 # Düzgün adın verilməsi -1. Bizim planetimizin adında dəyişən yaradın. Bu dəyişəni necə adlandırardınız? +1. Bizim planetimiz adında dəyişən yaradın. Bu dəyişəni necə adlandırardınız? 2. Veb səhifəyə daxil olan cari ziyarətçinin adını dəyişəndə saxlayın. Bu dəyişəni necə adlandırardınız? diff --git a/1-js/02-first-steps/04-variables/3-uppercast-constant/solution.md b/1-js/02-first-steps/04-variables/3-uppercast-constant/solution.md index e9894b069..0a31836d3 100644 --- a/1-js/02-first-steps/04-variables/3-uppercast-constant/solution.md +++ b/1-js/02-first-steps/04-variables/3-uppercast-constant/solution.md @@ -1,5 +1,5 @@ -Normalda, biz əl ilə yazılan sabit dəyişənləri böyük hərf ilə yazırıq. Digər sözlə, dəyişənin dəyəri skriptin icrasından öncə bilindikdə və kodda birbaşa yazıldıqda biz bu dəyişəni böyük hərf ilə yazırıq. +Normalda, biz əl ilə yazılan sabit dəyişənləri böyük hərf ilə yazırıq. Digər sözlə dəyişənin dəyəri skriptin icrasından öncə bilindikdə və kodda birbaşa yazıldıqda biz bu dəyişəni böyük hərf ilə yazırıq. -Bu kodda, `birthday` dəyişəninin bu formada olduğundan biz böyük hərfdən istifadə edə bilərik. +Bu kodda `birthday` dəyişəninin bu formada olduğundan biz böyük hərfdən istifadə edə bilərik. -Lakin, `age` dəyişəni icra zamanı hesablanır. Bugün bizdə bir yaş, bir il sonra isə fərqli yaş olacaq. Bu dəyişən kod icrası zamanı dəyişmir amma bu dəyişən hesablanır deyə `birthday`-dən daha "az sabitdir". Bu səbəbdən, bu dəyişənin adı böyük hərf ilə yazılmamalıdır. +Lakin `age` dəyişəni icra zamanı hesablanır. Bugün bizdə bir yaş, bir il sonra isə fərqli yaş olacaq. Bu dəyişən kod icrası zamanı dəyişmir amma bu dəyişən hesablanır deyə `birthday`-dən daha "az sabitdir". Bu səbəbdən, bu dəyişənin adı böyük hərf ilə yazılmamalıdır. From 761e7579c5664bf1f4923af512ed7742031f887c Mon Sep 17 00:00:00 2001 From: Eldar Shahmaliyev Date: Tue, 14 Jan 2025 19:48:02 +0400 Subject: [PATCH 4/8] Resolve issues Co-authored-by: Gasim Gasimzada Co-authored-by: Orkhan Huseynli --- 1-js/02-first-steps/04-variables/article.md | 88 ++++++++++----------- 1 file changed, 44 insertions(+), 44 deletions(-) diff --git a/1-js/02-first-steps/04-variables/article.md b/1-js/02-first-steps/04-variables/article.md index 71d6b40ca..1c7ebd959 100644 --- a/1-js/02-first-steps/04-variables/article.md +++ b/1-js/02-first-steps/04-variables/article.md @@ -1,24 +1,24 @@ # Dəyişənlər -Çox vaxt JavaScript applikasiyalarının məlumatlar ilə işləmələri lazımdır. Məsələn: -1. onlayn mağaza applikasiyasında satılan mallar və alış-veriş səbəti haqqında məlumatlar lazımdır. -2. çat applikasiyasında isitfadəçilər, ismarıclar və başqa maddələr haqqında məlumatlar lazımdır. +Çox vaxt JavaScript tətbiqləri məlumatlarla işləməlidir. Məsələn: +1. Onlayn mağaza -- məlumatlar satılan məhsulları və alış-veriş səbətini əhatə edə bilər. +2. Çat tətbiqi -- məlumatlar istifadəçiləri, mesajları və daha çoxunu ehtiva edə bilər. -Məlumatları saxlamaq üçün dəyişənlərdən istifadə edilir. +Dəyişənlər bu məlumatları saxlamaq üçün istifadə olunur. ## Dəyişən -[Dəyişən](https://en.wikipedia.org/wiki/Variable_(computer_science)), məlumat üçün üçün "adlı saxlama yeridir." Dəyişənlər ilə mağaza malları, applikasiyaya ziyarət edənlər və digər məlumatları saxlamaq mümkündür. +[Dəyişən (variable)](https://en.wikipedia.org/wiki/Variable_(computer_science)), məlumatlar üçün "adlandırılmış yaddaş" yeridir. Biz dəyişənlərdən məhsulları, ziyarətçiləri və digər məlumatları yadda saxlamaq üçün istifadə edə bilərik. JavaScript-də dəyişən yaratmaq üçün `let` açar sözündən istifadə edin. -Aşağıdakı ifadədə "message" adlı dəyişən yaradılır (digər sözlə, *bildirilir* ingiliscə, *declare*): +Aşağıdakı ifadə "message" adlı bir dəyişən yaradır (başqa sözlə "elan edir"): ```js let message; ``` -İndi, biz `=` təyinat operatorundan istifadə edərək bu dəyişənə məlumat təyin edə bilərik: +İndi biz mənimsətmə operatorundan (`=`) istifadə edərək bu dəyişənə bəzi məlumatlar yerləşdirə bilərik: ```js let message; @@ -53,9 +53,9 @@ Biz, həmçinin bir neçə dəyişəni eyni sətirdə müəyyənləşdirə bilə let user = 'Orxan', age = 25, message = 'Salam'; ``` -Bunun daha qısa olmasına baxmayaraq biz belə kod yazmağı tövsiyyə etmirik. Oxunaqlığı çoxaltmaq üçün hər dəyişən üçün ayrı sətir işlədin. +Bunun daha qısa olmasına baxmayaraq biz belə kod yazmağı tövsiyə etmirik. Oxunaqlığı çoxaltmaq üçün hər dəyişən üçün ayrı sətir istifadə edin. -Çox sətirli variantın biraz uzun olmasına baxmayaraq bunu oxumaq daha asandır: +Çox sətirli variantın bir az uzun olmasına baxmayaraq bunu oxumaq daha asandır: ```js let user = 'Orxan'; @@ -70,7 +70,7 @@ let user = 'Orxan', message = 'Salam'; ``` -...vı ya "vergül-birinci" stilində də müəyyənləşdirirlər: +...və ya "vergül-birinci" stilində də müəyyənləşdirirlər: ```js no-beautify let user = 'Orxan' @@ -88,14 +88,14 @@ Siz, köhnə skriptlərdə `let` əvəzinə `var` açar sözünün işlədildiyi *!*var*/!* message = 'Salam'; ``` -`var` dəyişəni *az qala* `let` ilə eynidir. Bu açar sözü dəyişənin daha "köhnə" üsul ilə müəyyənləşdirir. +`var` açar sözü `let` açar sözü ilə *demək olar ki* eynidir. O da dəyişən elan edir, lakin bir qədər fərqli, "köhnə üsulla". `let` və `var` arasında olan hiss edilməyən fərqlər var. Lakin, indi bu fərqlər bizi maralandırmır. Biz, bu fərqlər haqqında bölməsində detallı danışacağıq. ```` ## Real dünyada analogiya -"Dəyişən" konsepsiyasını yaxşı anlamaq üçün bunun, üzərində unikal adlı etiketi olan məlumatlar "qutusu" olduğunu fikirləşin. +Dəyişən anlayışını asanlıqla qavraya bilərik, əgər onu üzərində unikal ad yazılmış bir "etiket" olan məlumatlar üçün bir "qutu" kimi təsəvvür etsək. Məsələn, `message` dəyişəni daxilində "Salam!" dəyəri olan və `"message"` adı ilə etiketlənən qutudur: @@ -118,7 +118,7 @@ Dəyər dəyişdikdə dəyişəndə olan köhnə məlumat silinir: ![](variable-change.svg) -Əlavə olaraq, biz iki dəyişən yaradıb birinin məlumatını o birisinə kopiyalaya bilərik. +Biz həmçinin iki dəyişən elan edib, məlumatı birindən digərinə köçürə bilərik. ```js run let hello = 'Salam dünya!'; @@ -126,7 +126,7 @@ let hello = 'Salam dünya!'; let message; *!* -// 'Salam dünya' dəyərini hello dəyişənindən message dəyişəninə kopiyala +// 'Salam dünya' dəyərini hello dəyişənindən message dəyişəninə kopyala message = hello; */!* @@ -138,9 +138,9 @@ alert(message); // Salam dünya! ```smart header="Funksional dillər" Nəzərinizə çatdırmaq istəyirik ki, [Scala](http://www.scala-lang.org/) və [Erlang](http://www.erlang.org/) kimi [funksional](https://en.wikipedia.org/wiki/Functional_programming) proqramlaşdırma dillərində dəyişənin dəyişilməsinə icazə verilmir. -Bu dillərdə, dəyər "qutuya" yerləşdirildikdən sonra orada ömürlük qalır. Fərqli məlumat saxlamaq istədikdə proqramlaşdırma dili bizə yeni qutu (dəyişənin yaradılması) yaratmağa məcbur edir. Biz köhnə dəyəri yenidən təyin edə bilmirik. +Belə dillərdə, dəyər "qutunun içinə" bir dəfə yerləşdirildikdən sonra, o, orada əbədi qalır. Əgər başqa bir şey saxlamağımız lazım olarsa, dil bizi yeni bir qutu (yeni dəyişən elan etməyi) yaratmağa məcbur edir. Köhnəsini yenidən istifadə edə bilmirik. -İlk baxışda bunun biraz qəribə olmasına baxmayaraq bu dillərdə çox ciddi təkmilləşdirmə etmək mümkündür. Bundan əlavə, paralel hesablamalar kimi bəzi tapşırıqlarda bu məhdudiyyətin olmasının faydası var. Fikrinizi genişləndirmək üçün bu formalı dili öyrənməyi (hətta bunu işlətməyi planlaşdırmasanız belə) tövsiyyə edirik. +İlk baxışda bunun bir az qəribə olmasına baxmayaraq bu dillərdə çox ciddi təkmilləşdirmə etmək mümkündür. Bundan əlavə, paralel hesablamalar kimi bəzi tapşırıqlarda bu məhdudiyyətin olmasının faydası var. Fikrinizi genişləndirmək üçün bu formalı dili öyrənməyi (hətta bunu istifadə etməyi planlaşdırmasanız belə) tövsiyə edirik. ``` ## Dəyişənlərin adlandırılması [#variable-naming] @@ -159,9 +159,9 @@ let test123; Dəyişən adı bir neçə sözdən ibarət olduqda çox zaman [camelCase](https://en.wikipedia.org/wiki/CamelCase) formatından istifadə olunur. Bu formatında ilk sözdən başqa bütün sözlər böyük hərf ilə başlayır: `myVeryLongName`. -Dəyişən adlarında dollar (`'$'`) altdan xətt (`'_'`) işarələrinin də işlədilə bilməsi maraqlıdır. Bu simvollar, hərflər kimi xüsusi mənası olmayan sadə simvollardır. +Dəyişən adlarında dollar (`'$'`), altdan xətt (`'_'`) simvollarının da istifadə edilə bilməsi maraqlıdır. Bu simvollar, hərflər kimi xüsusi mənası olmayan sadə simvollardır. -Aşağıdakı dəyişən adlar etibarlıdır: +Aşağıdakı adlar keçərlidir: ```js run untrusted let $ = 1; // "$" adlı dəyişən təyin et @@ -170,7 +170,7 @@ let _ = 2; // "_" adlı dəyişən təyin et alert($ + _); // 3 ``` -Səhv məlumat adlarının nümunələri: +Yanlış dəyişən adlarına nümunələr: ```js no-beautify let 1a; // dəyişən adı rəqəm ilə başlaya bilməz @@ -178,40 +178,40 @@ let 1a; // dəyişən adı rəqəm ilə başlaya bilməz let my-name; // dəyişən adında '-' kimi simvollar ola bilməz ``` -```smart header="Case matters" +```smart header="Böyük-kiçik hərflər fərq yaradır" `apple` və `AppLE` adları fərqli dəyişənlərə istinad edir. ``` -````smart header="Latın adlarını işlətmək olar, amma tövsiyyə edilmir" -Kiril hərfləri və iyeroqlif daxil olmaqla istənilən dildə olan hərfləri işlətmək olar: +````smart header="Qeyri-latin hərflər istifadə etmək mümkündür, lakin tövsiyə edilmir" +Hər hansı bir dildən, o cümlədən kiril hərflərindən və hətta heroqliflərdən istifadə etmək mümkündür, məsələn: ```js let имя = '...'; let 我 = '...'; ``` -Texniki olaraq, burada heç bir xəta yoxdur. Lakin, beynəlxalq ənənəyə görə dəyişən adları İngiliscə yazılır. Kiçik skript yazsaq belə bu skriptin uzun həyatı ola bilər. Digər ölkələrdə olan proqramistlər bu skripti oxumalı ola bilərlər. +Texniki olaraq, burada heç bir səhv yoxdur, belə adlar uyğundur, lakin dəyişən adlarında ingilis dilindən istifadə etmək beynəlxalq bir ənənədir. Hətta kiçik bir skript yazsaq belə, onun uzun bir ömrü ola bilər. Başqa ölkələrdən olan insanlar bir gün onu oxumağa ehtiyac duya bilərlər. ```` ````warn header="Qorunan adlar" -JavaScript dilində işlədilən bəzi [qorunan sözləri](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Lexical_grammar#Keywords) dəyişən adı kimi işlətmək olmaz. +JavaScript dilində istifadə edilən bəzi [qorunan sözləri](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Lexical_grammar#Keywords) dəyişən adı kimi istifadə etmək olmaz. Məsələn: `let`, `class`, `return` və `function` sözləri qorunur. Aşağıdakı kodda sintaksis xətası baş verəcək: ```js run no-beautify -let let = 5; // xəta! "let" adlı dəyişən işlətmək olmaz! -let return = 5; // xəta! "return" adlı dəyişən işlətmək olmaz! +let let = 5; // xəta! "let" adlı dəyişən istifadə etmək olmaz! +let return = 5; // xəta! "return" adlı dəyişən istifadə etmək olmaz! ``` ```` ````warn header="`use strict`-siz təyinat" -Normalda, dəyişəni işlətməmişdən öncə bu dəyişəni yaratmaq lazımdır. Lakin, keçmişdə dəyişəni `let` kimi açar sözü işlətmədən müəyyənləşdirmək mümkün idi. Skriptlərə `use strict` əlavə etmədikdə bu formada olan kodlar işləyəcək. +Adətən, dəyişəni istifadə etməzdən əvvəl elan etməliyik. Lakin keçmişdə, sadəcə dəyəri təyin etməklə `let` istifadə etmədən də dəyişən yaratmaq texniki olaraq mümkün idi. Bu, hələ də köhnə skriptlərlə uyğunluğu qorumaq üçün skriptlərimizdə `use strict` istifadə etmədiyimiz təqdirdə mümkündür. ```js run no-strict -// qeyd: bu nümunədə "use strict" işlədilmir +// qeyd: bu nümunədə "use strict" direktivi istifadə edilmir num = 5; // "num" dəyişəni olmadıqda dəyişən yaranacaq @@ -231,13 +231,13 @@ num = 5; // xəta: num təyin edilməyib ## Sabit dəyişənlər -Sabit (dəyişməyən) dəyişən yaratmaq istəyirsinizsə, `let` əvəzinə `const` işlədin: +Sabit (dəyişməyən) dəyişən yaratmaq istəyirsinizsə, `let` əvəzinə `const` istifadə edin: ```js const myBirthday = '18.04.1982'; ``` -`const` ilə yaranan dəyişənlər "sabit dəyişənlər" adlandırılır. Bu dəyişənləri yenidən təyin etmək mümkün deyil. Dəyişənin dəyərini dəyişmək istədikdə xəta baş verəcək: +`const` istifadə edilərək elan edilmiş dəyişənlər "konstantlar/sabit dəyişənlər" adlanır. Onlar yenidən təyin edilə bilməz. Bunu etməyə cəhd edilsə, xəta yaranacaq: ```js run const myBirthday = '18.04.1982'; @@ -245,12 +245,12 @@ const myBirthday = '18.04.1982'; myBirthday = '01.01.2001'; // xəta, sabit dəyişəni dəyişmək olmaz! ``` -Proqramçı dəyişənin heç vaxt dəyişməyəcəyindən əmin olduqda dəyişəni `const` ilə təyin edərək bu dəyişənin dəyişməyəcəyini siğortalayıb digər proqramçılara bildirə bilər. +Proqramçı bir dəyişənin heç vaxt dəyişməyəcəyinə əmin olduqda, bunu `const` ilə elan edə bilər ki, bunu təmin etsin və hər kəsə açıq şəkildə bildirsin. ### Böyük hərf ilə yazılmış sabit dəyişənlər -Praktikada, çətin yadda qalan dəyərlər skript icra olunmamışdan öncə sabit dəyişələr ilə ləqəbləndirilir. +İcra edilmədən əvvəl məlum olan və yadda saxlamaq çətin olan dəyərlər üçün sabit dəyişənlərdən ləqəb (alias) kimi istifadə etmək geniş yayılmış bir praktikadır. Bu formalı sabit dəyişənlər böyük hərf və altdan xətt ilə adlandırılırlar. @@ -290,13 +290,13 @@ Digər sözlə, böyük hərf ilə yazılan sabit dəyişənləri yalnız "əl i Dəyişənləri adlandırdıqda çox vacib məqam var. -Dəyişən adının saxladığı məlumatı təsvir edən təmin və mənalı adı olmalıdır. +Dəyişən adı, saxladığı məlumatı təsvir edən, aydın və konkret bir mənaya sahib olmalıdır. -Dəyişənləri adlandırmaq proqramlaşdırmada çox vacib və mürəkkəb bacarıqlardan biridir. Dəyişənin adına baxdıqda kodun yenibaşlayan və ya təcrübəli proqramçının yazdığını bilmək mümkündür. +Dəyişənləri adlandırmaq proqramlaşdırmada çox vacib və mürəkkəb bacarıqlardan biridir. Dəyişən adlarına tez bir nəzər salmaqla, kodun başlanğıc səviyyəli bir proqramçı tərəfindən yoxsa təcrübəli bir proqramçı tərəfindən yazıldığını müəyyən etmək mümkündür. -Real layihədə işlədikdə vaxtın çoxu sıfırdan kod yazmaq əvəzinə mövcud kodu dəyişməyə və artırmağa gedir. Digər tapşırıqlardan kodunuza qayıtdıqda yaxşı adlandırılmış məlumatları tapmaq daha asandır. Digər sözlə dəyişənləri yaxşı adlandırmaq lazımdır. +Real bir layihədə, vaxtın böyük hissəsi sıfırdan tamamilə ayrı bir şey yazmaqdan daha çox mövcud kod bazasını dəyişdirmək və genişləndirməyə sərf olunur. Bir müddət başqa bir işlə məşğul olduqdan sonra koda qayıtdığımızda, yaxşı işarələnmiş məlumatları tapmaq daha asan olur. Başqa sözlə, dəyişənlər yaxşı adlara sahib olduqda bu daha rahat olur. -Dəyişəni müəyyənləşdirməmişdən öncə yaxşı ad haqqında biraz fikirləşin. Bunu etdikdə faydasını görəcəksiniz. +Dəyişəni müəyyənləşdirməmişdən öncə yaxşı ad haqqında bir az fikirləşin. Bunu etdikdə faydasını görəcəksiniz. Bəzi əməl edə biləcəyiniz yaxşı qaydalar: @@ -307,24 +307,24 @@ Bəzi əməl edə biləcəyiniz yaxşı qaydalar: Sadə görünür? Bunun sadə görünməyinə baxmayaraq praktikada təsvirli və dəqiq dəyişən adları düzəltmək çətindir. -```smart header="Yenidən işlət yoxsa yarat?" -Bəzi avara proqramçılar yeni dəyişən yaratmaq əvəzinə mövcud dəyişəni istifadə etməyi sevirlər. +```smart header="Yenidən istifadə et yoxsa yarat?" +Son olaraq, bəzi tənbəl proqramçılar, yeni dəyişənlər elan etmək əvəzinə, mövcud dəyişənləri yenidən istifadə etməyə meyillidirlər. -Nəticədə, bu dəyişənlər etiketi dəyişməyən, amma daxili dəyişən qutulara bənzəyirlər. Qutunun içində nəyin olduğunu heç kim bilmir. Bu səbəbdən, biz bu kodlara yaxından baxım yoxlamalıyıq. +Nəticədə, bu dəyişənlər etiketi dəyişməyən, amma daxili dəyişən qutulara bənzəyirlər. Qutunun içində nəyin olduğunu heç kim bilmir. Bu səbəbdən, biz bu kodlara yaxından baxıb yoxlamalıyıq. Bu proqramçılar dəyişən yaratmaqda az vaxt, amma debaq zamanı on dəfə çox vaxt xərcləyirlər. Yeni dəyişən yaratmaq pis deyil. -Modern JavaScript minifikasiya edici qurğuları və brauzerlər kodu yaxşı optimallaşdırırlar. Bu səbəbdən, çox dəyişən yaratdıqda performans problemləri yaranmayacaq. Fərqli dəyərlər üçün fərqli dəyişənlər işlətdikdə JavaScript mühərriki kodunuzu daha da yaxşı optimizasiya edə bilər. +Müasir JavaScript minifikasiya alətləri və brauzerlər kodu kifayət qədər yaxşı optimallaşdırır, buna görə performans problemləri yaratmayacaq. Fərqli dəyərlər üçün fərqli dəyişənlərdən istifadə etmək hətta mühərrikin kodunuzu daha yaxşı optimallaşdırmasına kömək edə bilər. ``` ## Xülasə Dəyişənləri `var`, `let` və ya `const` açar sözləri ilə yaratmaq mümkündür. -- `let` -- modern dəyişən yaratmaq üçün işlədilir. -- `var` -- köhnə üsulda dəyişən yaratmaq üçün işlədilir. Normalda, biz bu dəyişəndən istifadə etmirik, amma bölməsində `let` və `var` arasında olan fərqlərdən danışacağıq. -- `const` -- `let` kimidir. Lakin, bununla yaranan dəyişənin dəyəri dəyişə bilməz. +- `let` — müasir dəyişən elanıdır. +- `var` — köhnə üsulla dəyişən elanıdır. Adətən, ondan ümumiyyətlə istifadə etmirik, lakin bölməsində `let` və `var` arasında olan fərqlərdən danışacağıq. +- `const` — `let` kimidir, amma dəyişənin dəyəri dəyişdirilə bilməz. -Dəyişənləri, təyin olunan dəyəri yaxşı başa salan adlar ilə adlandırmağı tövsiyyə edirik. +Dəyişənlər elə adlandırılmalıdır ki, onların içində nə olduğunu asanlıqla anlaya bilək. From a0f45f0de1eb187090e5e228ce422f8a7a6a7480 Mon Sep 17 00:00:00 2001 From: Eldar Shahmaliyev Date: Tue, 14 Jan 2025 20:25:06 +0400 Subject: [PATCH 5/8] Improve explanation of strict mode error Co-authored-by: Gasim Gasimzada Co-authored-by: Orkhan Huseynli --- 1-js/02-first-steps/04-variables/article.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/1-js/02-first-steps/04-variables/article.md b/1-js/02-first-steps/04-variables/article.md index 1c7ebd959..fe935b7dd 100644 --- a/1-js/02-first-steps/04-variables/article.md +++ b/1-js/02-first-steps/04-variables/article.md @@ -218,7 +218,7 @@ num = 5; // "num" dəyişəni olmadıqda dəyişən yaranacaq alert(num); // 5 ``` -Bunun pis praktika olduğundan bu sizə strikt rejimində xəta verəcək: +Bu pis bir praktika hesab olunur və sıx rejimdə xətaya səbəb olacaq: ```js "use strict"; From 7cefaf8f0096d063390fe4a0e595fb11c73195d0 Mon Sep 17 00:00:00 2001 From: Eldar Shahmaliyev Date: Wed, 15 Jan 2025 11:46:42 +0400 Subject: [PATCH 6/8] Resolve issues Co-authored-by: Gasim Gasimzada --- .../04-variables/1-hello-variables/solution.md | 2 +- .../04-variables/1-hello-variables/task.md | 8 ++++---- .../04-variables/2-declare-variables/solution.md | 10 +++++----- .../04-variables/3-uppercast-constant/solution.md | 6 +++--- .../04-variables/3-uppercast-constant/task.md | 10 +++++----- 5 files changed, 18 insertions(+), 18 deletions(-) diff --git a/1-js/02-first-steps/04-variables/1-hello-variables/solution.md b/1-js/02-first-steps/04-variables/1-hello-variables/solution.md index 230a1710d..5cd7885f4 100644 --- a/1-js/02-first-steps/04-variables/1-hello-variables/solution.md +++ b/1-js/02-first-steps/04-variables/1-hello-variables/solution.md @@ -1,7 +1,7 @@ Aşağıdakı kodda olan hər sətir tapşırıqda olan hər maddəyə aiddir. ```js run -let admin, name; // eyni zamanda iki dəyişən yaratmaq mümkündür +let admin, name; // bir dəfəyə iki dəyişən elan etmək mümkündür name = "Orxan"; diff --git a/1-js/02-first-steps/04-variables/1-hello-variables/task.md b/1-js/02-first-steps/04-variables/1-hello-variables/task.md index dcd0966ee..e74d54f04 100644 --- a/1-js/02-first-steps/04-variables/1-hello-variables/task.md +++ b/1-js/02-first-steps/04-variables/1-hello-variables/task.md @@ -4,7 +4,7 @@ importance: 2 # Dəyişənlər ilə işləmək -1. İki dəyişən yaradın: `admin` və `name`. -2. `"Orxan"` dəyərini `name` dəyişəninə təyin edin. -3. `name` adını `admin` adına kopiyalayın. -4. `admin` dəyişəninin dəyərini `alert` ilə göstərin ("Orxan" göstərməlidir). +1. İki dəyişən elan edin: `admin` və `name`. +2. `name` dəyişəninə `"Orxan"` dəyərini təyin edin. +3. `name` dəyişənindən `admin` dəyişəninə dəyəri kopyalayın. +4. `admin` dəyişəninin dəyərini `alert` istifadə edərək göstərin (nəticə "Orxan" olmalıdır). diff --git a/1-js/02-first-steps/04-variables/2-declare-variables/solution.md b/1-js/02-first-steps/04-variables/2-declare-variables/solution.md index 9454860aa..9656f2fdf 100644 --- a/1-js/02-first-steps/04-variables/2-declare-variables/solution.md +++ b/1-js/02-first-steps/04-variables/2-declare-variables/solution.md @@ -1,12 +1,12 @@ -## Bizim planetimizin dəyişəni +## Bizim planet üçün dəyişən -Bu asandır: +Bu sadədir: ```js let ourPlanetName = "Yer"; ``` -Nəzərə alın ki, biz `planet` adından istifadə edə bilərdik. Lakin, bu ad ilə hansı planetdən danışdığımız bilinməyəcəkdir. Daha aydın adlar yazmaq yaxşıdır. +Qeyd edək ki, daha qısa `planet` adı istifadə edə bilərdik, amma onun hansı planetə aid olduğu aydın olmaya bilər. Daha izahlı olmaq yaxşıdır. Ən azı dəyişən çox uzun olmadığı müddətcə. ## Cari ziyarətçinin adı @@ -14,8 +14,8 @@ Nəzərə alın ki, biz `planet` adından istifadə edə bilərdik. Lakin, bu ad let currentUserName = "Orxan"; ``` -Biz bu dəyişənin həmişə cari istifadəçi haqqında olduğunu bilsəydik bu dəyişəni `userName` adlandıra bilərdik. +Yenə də, əgər istifadəçinin cari olduğunu dəqiq bilsək, bunu `userName` kimi qısalda bilərik. -Modern redaktorlarda olan avtomatik tamamlayıcı qurğular ilə uzun adları yazmaq asanlaşır. Üç sözdən ibarət ad normaldır. +Müasir redaktorlar və avtomatik tamamlanma xüsusiyyəti uzun dəyişən adlarını yazmağı asanlaşdırır. Onlardan qənaət etməyin. Üç sözlük bir ad tamamilə qəbul ediləndir. Əgər redaktorunuzda avtomatik tamamlama xüsusiyyəti yoxdursa, [yeni redaktor əldə edin](/code-editors). diff --git a/1-js/02-first-steps/04-variables/3-uppercast-constant/solution.md b/1-js/02-first-steps/04-variables/3-uppercast-constant/solution.md index 0a31836d3..d9bf0fa42 100644 --- a/1-js/02-first-steps/04-variables/3-uppercast-constant/solution.md +++ b/1-js/02-first-steps/04-variables/3-uppercast-constant/solution.md @@ -1,5 +1,5 @@ -Normalda, biz əl ilə yazılan sabit dəyişənləri böyük hərf ilə yazırıq. Digər sözlə dəyişənin dəyəri skriptin icrasından öncə bilindikdə və kodda birbaşa yazıldıqda biz bu dəyişəni böyük hərf ilə yazırıq. +Normalda, biz əl ilə yazılan sabit dəyişənləri böyük hərf ilə yazırıq. Digər sözlə dəyişənin dəyəri skriptin icrasından öncə bilindikdə və kodda birbaşa yazıldıqda biz bu dəyişəni böyük hərflərlə yazırıq. -Bu kodda `birthday` dəyişəninin bu formada olduğundan biz böyük hərfdən istifadə edə bilərik. +Bu kodda `birthday` məhz belədir. Ona görə də onun üçün böyük hərflərdən istifadə edə bilərik. -Lakin `age` dəyişəni icra zamanı hesablanır. Bugün bizdə bir yaş, bir il sonra isə fərqli yaş olacaq. Bu dəyişən kod icrası zamanı dəyişmir amma bu dəyişən hesablanır deyə `birthday`-dən daha "az sabitdir". Bu səbəbdən, bu dəyişənin adı böyük hərf ilə yazılmamalıdır. +Lakin `age` dəyişəni icra zamanı hesablanır. Bu gün bizdə fərqli bir yaş, bir il sonra isə fərqli bir yaş olacaq. Bu dəyişən kod icrası zamanı dəyişmir amma bu dəyişən hesablanır deyə `birthday`-dən "daha az sabitdir". Bu səbəbdən, bu dəyişənin adı böyük hərflərlə yazılmamalıdır. diff --git a/1-js/02-first-steps/04-variables/3-uppercast-constant/task.md b/1-js/02-first-steps/04-variables/3-uppercast-constant/task.md index cdb859348..4eeac7d6a 100644 --- a/1-js/02-first-steps/04-variables/3-uppercast-constant/task.md +++ b/1-js/02-first-steps/04-variables/3-uppercast-constant/task.md @@ -2,7 +2,7 @@ importance: 4 --- -# Böyük hərf ilə const? +# Böyük hərflərlə const? Aşağıdakı koda baxın: @@ -12,13 +12,13 @@ const birthday = '18.04.1982'; const age = someCode(birthday); ``` -Burada `birthday` adlı sabit zaman dəyişəni və `birthday`-dən hesablanan `age` sabit dəyişəni var (hesablama funksiyasının vacib olmadığından bu kodun tətbiq detalı göstərilməyib). +Burada `birthday` olaraq adlandırılmış bir tarix dəyəri saxlayan konstantımız var. `age` həmin `birthday` və müəyyən bir kodun köməyi ilə hesablanır (qısa olsun deyə və təfərrüatlar burada əhəmiyyətli olmadığı üçün bu kod təmin edilməyib). -`birthday` üçün böyük hərf işlətmək yaxşı fikirdir? Bəs `age` üçün? Bəs hər ikisi üçün? +`birthday` üçün böyük hərflərdən istifadə etmək yaxşı fikirdir? ```js -const BIRTHDAY = '18.04.1982'; // böyük hərf ilə yazaq? +const BIRTHDAY = '18.04.1982'; // böyük hərflərlə yazaq? -const AGE = someCode(BIRTHDAY); // böyük hərf ilə yazaq? +const AGE = someCode(BIRTHDAY); // böyük hərflərlə yazaq? ``` From 8dd91cd4150b91001163ea9a4f0667cf3fa60fd8 Mon Sep 17 00:00:00 2001 From: Eldar Shahmaliyev Date: Wed, 15 Jan 2025 11:52:05 +0400 Subject: [PATCH 7/8] Clarify variable declaration style by adding "comma-first style" explanation --- 1-js/02-first-steps/04-variables/article.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/1-js/02-first-steps/04-variables/article.md b/1-js/02-first-steps/04-variables/article.md index fe935b7dd..9387f7032 100644 --- a/1-js/02-first-steps/04-variables/article.md +++ b/1-js/02-first-steps/04-variables/article.md @@ -70,7 +70,7 @@ let user = 'Orxan', message = 'Salam'; ``` -...və ya "vergül-birinci" stilində də müəyyənləşdirirlər: +...və ya "vergül-birinci" stilində (comma-first style) də müəyyənləşdirirlər: ```js no-beautify let user = 'Orxan' From 82df3f5bbc8c791342db3f0176eac933d84ed358 Mon Sep 17 00:00:00 2001 From: Eldar Shahmaliyev Date: Wed, 15 Jan 2025 12:41:10 +0400 Subject: [PATCH 8/8] Improve clarity and consistency in variable naming and best practices --- .../3-uppercast-constant/solution.md | 2 +- 1-js/02-first-steps/04-variables/article.md | 27 ++++++++++--------- 2 files changed, 15 insertions(+), 14 deletions(-) diff --git a/1-js/02-first-steps/04-variables/3-uppercast-constant/solution.md b/1-js/02-first-steps/04-variables/3-uppercast-constant/solution.md index d9bf0fa42..8585309c0 100644 --- a/1-js/02-first-steps/04-variables/3-uppercast-constant/solution.md +++ b/1-js/02-first-steps/04-variables/3-uppercast-constant/solution.md @@ -1,4 +1,4 @@ -Normalda, biz əl ilə yazılan sabit dəyişənləri böyük hərf ilə yazırıq. Digər sözlə dəyişənin dəyəri skriptin icrasından öncə bilindikdə və kodda birbaşa yazıldıqda biz bu dəyişəni böyük hərflərlə yazırıq. +Normalda, biz əl ilə yazılan sabit dəyişənləri böyük hərflərlə yazırıq. Digər sözlə dəyişənin dəyəri skriptin icrasından öncə bilindikdə və kodda birbaşa yazıldıqda biz bu dəyişəni böyük hərflərlə yazırıq. Bu kodda `birthday` məhz belədir. Ona görə də onun üçün böyük hərflərdən istifadə edə bilərik. diff --git a/1-js/02-first-steps/04-variables/article.md b/1-js/02-first-steps/04-variables/article.md index 9387f7032..6081c5a45 100644 --- a/1-js/02-first-steps/04-variables/article.md +++ b/1-js/02-first-steps/04-variables/article.md @@ -150,14 +150,15 @@ JavaScript-də dəyişənlərin adlandırılmasında iki məhdudiyyət var: 1. Dəyişən adında yalnız hərflər, rəqəmlər və ya `$` və `_` kimi simvollar ola bilər. 2. Dəyişən adının ilk hərfi rəqəm ola bilməz. -Etibarlı adlar üçün nümunələr: +Keçərli adlar üçün nümunələr: ```js let userName; let test123; ``` -Dəyişən adı bir neçə sözdən ibarət olduqda çox zaman [camelCase](https://en.wikipedia.org/wiki/CamelCase) formatından istifadə olunur. Bu formatında ilk sözdən başqa bütün sözlər böyük hərf ilə başlayır: `myVeryLongName`. +Dəyişən adı bir neçə sözdən ibarət olduqda çox zaman [camelCase](https://en.wikipedia.org/wiki/CamelCase) +formatından istifadə olunur. Bu formatda/stildə ilk sözdən başqa bütün sözlər böyük hərf ilə başlayır: `myVeryLongName`. Dəyişən adlarında dollar (`'$'`), altdan xətt (`'_'`) simvollarının da istifadə edilə bilməsi maraqlıdır. Bu simvollar, hərflər kimi xüsusi mənası olmayan sadə simvollardır. @@ -182,7 +183,7 @@ let my-name; // dəyişən adında '-' kimi simvollar ola bilməz `apple` və `AppLE` adları fərqli dəyişənlərə istinad edir. ``` -````smart header="Qeyri-latin hərflər istifadə etmək mümkündür, lakin tövsiyə edilmir" +````smart header="Qeyri-latın hərflər istifadə etmək mümkündür, lakin tövsiyə edilmir" Hər hansı bir dildən, o cümlədən kiril hərflərindən və hətta heroqliflərdən istifadə etmək mümkündür, məsələn: ```js @@ -201,8 +202,8 @@ Məsələn: `let`, `class`, `return` və `function` sözləri qorunur. Aşağıdakı kodda sintaksis xətası baş verəcək: ```js run no-beautify -let let = 5; // xəta! "let" adlı dəyişən istifadə etmək olmaz! -let return = 5; // xəta! "return" adlı dəyişən istifadə etmək olmaz! +let let = 5; // xəta! dəyişəni "let" olaraq adlandırmaq olmaz! +let return = 5; // xəta! dəyişəni "return" olaraq adlandırmaq olmaz! ``` ```` @@ -218,7 +219,7 @@ num = 5; // "num" dəyişəni olmadıqda dəyişən yaranacaq alert(num); // 5 ``` -Bu pis bir praktika hesab olunur və sıx rejimdə xətaya səbəb olacaq: +Bu pis bir praktika hesab olunur və sıx rejimdə (strict mode) xətaya səbəb olacaq: ```js "use strict"; @@ -252,7 +253,7 @@ Proqramçı bir dəyişənin heç vaxt dəyişməyəcəyinə əmin olduqda, bunu İcra edilmədən əvvəl məlum olan və yadda saxlamaq çətin olan dəyərlər üçün sabit dəyişənlərdən ləqəb (alias) kimi istifadə etmək geniş yayılmış bir praktikadır. -Bu formalı sabit dəyişənlər böyük hərf və altdan xətt ilə adlandırılırlar. +Belə konstantların adlandırılmasında böyük hərflər və alt xətlərdən (`_`) istifadə olunur. Məsələn, gəlin "veb" (16-lı rəqəm) formatında olan rənglər üçün sabit dəyişənlər yaradaq: @@ -271,15 +272,15 @@ Faydaları: - `COLOR_ORANGE` dəyəri yadda saxlamaq `"#FF7F00"` dəyərini yadda saxlamaqdan daha asandır. - `"#FF7F00"` dəyərində səhv etmək `COLOR_ORANGE` dəyərində səhv etməkdən daha asandır. -- Kodu oxuduqda `COLOR_ORANGE` dəyərinin mənası `#FF7F00` dəyərinin mənasından daha çoxdur. +- Kodu oxuduqda `COLOR_ORANGE`'in ifadə etdiyi məna, `#FF7F00`'dən daha anlamlıdır. Sabit dəyişənləri nə zaman normal formada, nə zaman isə böyük hərflər ilə yazmaq lazımdır? Gəlin bunun açıqlamasını verək. -Dəyişənin "sabit" olması, bu dəyişənin heç vaxt dəyişməməsi deməkdir. Lakin, bəzi sabit dəyişənlər skript icra olunmamışdan öncə (qırmızı rəngin 16-lıq rəqəmi kimi) , bəziləri isə icra zamanı *hesablanır* və sabit qalır. +Dəyişənin “sabit” olması, onun dəyərinin heç vaxt dəyişməməsi deməkdir. Lakin bəzi sabit dəyişənlər skript icra olunmazdan əvvəl məlum olur (məsələn, qırmızı rəngin onaltılıq dəyəri kimi), digərləri isə icra zamanı *hesablanır* və sabit qalır. Məsələn: ```js -const pageLoadTime = /* veb səhifənin yüklənməsinə xərclənən zaman */; +const pageLoadTime = /* Veb səhifənin yüklənmə müddəti */; ``` `pageLoadTime` dəyəri səhifə yüklənməmişdən öncə bilinmədiyindən bu, normal adlandırılır. Lakin, bu dəyər təyin edildikdən sonra dəyişmədiyindən sabit qalır. @@ -292,7 +293,7 @@ Dəyişənləri adlandırdıqda çox vacib məqam var. Dəyişən adı, saxladığı məlumatı təsvir edən, aydın və konkret bir mənaya sahib olmalıdır. -Dəyişənləri adlandırmaq proqramlaşdırmada çox vacib və mürəkkəb bacarıqlardan biridir. Dəyişən adlarına tez bir nəzər salmaqla, kodun başlanğıc səviyyəli bir proqramçı tərəfindən yoxsa təcrübəli bir proqramçı tərəfindən yazıldığını müəyyən etmək mümkündür. +Dəyişənləri adlandırmaq proqramlaşdırmada çox vacib və mürəkkəb bacarıqlardan biridir. Dəyişən adlarına tez bir nəzər salmaqla, kodun başlanğıc səviyyəli bir proqramçı yoxsa təcrübəli bir proqramçı tərəfindən yazıldığını müəyyən etmək mümkündür. Real bir layihədə, vaxtın böyük hissəsi sıfırdan tamamilə ayrı bir şey yazmaqdan daha çox mövcud kod bazasını dəyişdirmək və genişləndirməyə sərf olunur. Bir müddət başqa bir işlə məşğul olduqdan sonra koda qayıtdığımızda, yaxşı işarələnmiş məlumatları tapmaq daha asan olur. Başqa sözlə, dəyişənlər yaxşı adlara sahib olduqda bu daha rahat olur. @@ -303,9 +304,9 @@ Bəzi əməl edə biləcəyiniz yaxşı qaydalar: - `userName` və ya `shoppingCart` kimi insanların başa düşə biləcəyi adlardan istifadə edin. - Qısaldılmış adlardan və ya `a`, `b`, `c` kimi adlardan uzaq durun. - Adları maksimal dərəcədə təsvirli və dəqiq edin. `data` və `value` kimi adlar pisdir. Bu adlar nəyin baş verdiyi haqqda heç nə təsvir etmir. Əgər kodun konteksti dəyişənin hansı məlumat və ya dəyərə istinad etdiyini göstərirsə, belə adlardan istifadə etmək olar. -- Komandanızda və beyninizdə terminlər haqqında razılığıa gəlin. Əgər sayt ziyatətçisi "user" adlanırsa, buna aid dəyişənləri `currentVisitor` və ya `newManInTown` adlandırmaq əvəzinə `currentUser` və ya `newUser` adlandırın. +- Komandanız daxilində və özünüzlə razılaşın. Əgər sayt ziyarətçisinə "istifadəçi" deyiriksə, onda əlaqəli dəyişənləri `currentUser` və ya `newUser` adlandırmalıyıq, `currentVisitor` və ya `newManInTown` deyil. -Sadə görünür? Bunun sadə görünməyinə baxmayaraq praktikada təsvirli və dəqiq dəyişən adları düzəltmək çətindir. +Sadə səslənir? Əslində belədir, amma praktikada təsviri və qısa dəyişən adları yaratmaq asan deyil. ```smart header="Yenidən istifadə et yoxsa yarat?" Son olaraq, bəzi tənbəl proqramçılar, yeni dəyişənlər elan etmək əvəzinə, mövcud dəyişənləri yenidən istifadə etməyə meyillidirlər.