You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Copy file name to clipboardExpand all lines: 1-js/01-getting-started/1-intro/article.md
+79
Original file line number
Diff line number
Diff line change
@@ -1,10 +1,18 @@
1
1
# JavaScript-ə giriş
2
2
3
+
<<<<<<< HEAD
3
4
Gəlin JavaScript-in niyə belə xüsusi olduğuna, onunla nələr edə biləcəyimizə və onun hansı texnologiyalarla qaynayıb qarışdığına bir nəzər yetirək.
5
+
=======
6
+
Let's see what's so special about JavaScript, what we can achieve with it, and what other technologies play well with it.
7
+
>>>>>>> 34a80e70f8cce5794be259d25f815d7a7db7cbe3
4
8
5
9
## JavaScript nədir?
6
10
11
+
<<<<<<< HEAD
7
12
_JavaScript_ ilkin olaraq _"web səhifələri canlandırmaq"_ üçün yaradılmışdır.
13
+
=======
14
+
*JavaScript* was initially created to "make web pages alive".
15
+
>>>>>>> 34a80e70f8cce5794be259d25f815d7a7db7cbe3
8
16
9
17
Bu dilə yazılmış proqramlar _skriptlər_ adlandırılır. Bu skriptlər, birbaşa web səhifənin HTML-inin içərisində yazıla və səhifə yükləndikcə icra oluna bilər.
10
18
@@ -26,21 +34,35 @@ Brauzerin daxilində "JavaScript virtual maşını" adlı bir mühərrik mövcud
26
34
27
35
Müxtəlif mühərriklərin müxtəlif kodadları var. Misalçün:
28
36
37
+
<<<<<<< HEAD
29
38
-[V8](<https://en.wikipedia.org/wiki/V8_(JavaScript_engine)>) -- Chrome və Operada.
30
39
-[SpiderMonkey](https://en.wikipedia.org/wiki/SpiderMonkey) -- in Firefoxda.
31
40
-[Chakra](<https://en.wikipedia.org/wiki/Chakra_(JScript_engine)>) -- Microsoft Edgedə
32
41
-[JavaScriptCore](https://en.wikipedia.org/wiki/WebKit#JavaScriptCore) -- Safaridə (WebKit) və s.
33
42
34
43
Yuxarıdakı terminləri yadda saxlamağınız tövsiyyə olunur çünki, bu cür terminlər developer məqalələrində çox istifadə olunur. Nümunə üçün onu deyə bilərik ki, kimsə sizə "filan xüsusiyyət V8-də dəstəklənir" deyəndə, o dəqiqə biləcəksiniz ki, Chrome və Opera (bir də gördünüz MS Edge) bu xüsusiyyəti dəstəkləyir.
44
+
=======
45
+
-[V8](https://en.wikipedia.org/wiki/V8_(JavaScript_engine)) -- in Chrome, Opera and Edge.
46
+
-[SpiderMonkey](https://en.wikipedia.org/wiki/SpiderMonkey) -- in Firefox.
47
+
- ...There are other codenames like "Chakra" for IE, "JavaScriptCore", "Nitro" and "SquirrelFish" for Safari, etc.
48
+
49
+
The terms above are good to remember because they are used in developer articles on the internet. We'll use them too. For instance, if "a feature X is supported by V8", then it probably works in Chrome, Opera and Edge.
50
+
>>>>>>> 34a80e70f8cce5794be259d25f815d7a7db7cbe3
35
51
36
52
```smart header="Bəs bu mühərriklər necə işləyir?"
37
53
38
54
Düzünü desək, bu mühərriklər olduqca mürəkkəbdir lakin əsaslar sadədir:
39
55
56
+
<<<<<<< HEAD
40
57
1. Əvvəlcə skript oxunulur, token-lərə ayrılır və parse edilir
41
58
2. Yaradılmış token-lərdən [AST](https://en.wikipedia.org/wiki/Abstract_syntax_tree) qurulur
42
59
3. Həmin tree-dən [bytecode](https://en.wikipedia.org/wiki/Bytecode) generasiya olunur
43
60
4. Bytecode isə maşın koduna çevrilərək icra olunur
61
+
=======
62
+
1. The engine (embedded if it's a browser) reads ("parses") the script.
63
+
2. Then it converts ("compiles") the script to machine code.
64
+
3. And then the machine code runs, pretty fast.
65
+
>>>>>>> 34a80e70f8cce5794be259d25f815d7a7db7cbe3
44
66
45
67
Təbii ki, mühərrikin işi bununla bitmir. Hər bir mərhələdə müəyyən optimallaşdırmalar aparılır və skriptlər icra olunduqca optimallaşdırma üçün məlumatlar toplanılır. Bunun vasitəsilə daha süərtli maşın kodları generasiya olunur.
46
68
```
@@ -51,7 +73,11 @@ Müasir JavaScript olduqca təhlükəsiz proqramlaşdırma dilidir. O, ilkin ola
51
73
52
74
Lakin JavaScript-in imkanları onun icra olunduğu mühitdən asılı olaraq dəyişir. Misalçün, [Node.js](https://wikipedia.org/wiki/Node.js) ilə JavaScript faylları oxuya/yaza, şəbəkə sorğuları və s. edə bilər.
53
75
76
+
<<<<<<< HEAD
54
77
Brauzer daxilində isə, JavaScript web səhifə ilə bağlı demək olar ki, hər şeyi edə bilir.
78
+
=======
79
+
Modern JavaScript is a "safe" programming language. It does not provide low-level access to memory or the CPU, because it was initially created for browsers which do not require it.
80
+
>>>>>>> 34a80e70f8cce5794be259d25f815d7a7db7cbe3
55
81
56
82
Bunlara misal olaraq:
57
83
@@ -67,14 +93,23 @@ Və digər şeyləri göstərmək olar.
67
93
68
94
İstifadəçinin təhlükəsizliyini təmin etmək üçün, JavaScript-in brauzerdəki funksionallıqları limitlidir.
69
95
96
+
<<<<<<< HEAD
70
97
Bu cür limitlərə aşağıdakılar daxildir:
98
+
=======
99
+
JavaScript's abilities in the browser are limited to protect the user's safety. The aim is to prevent an evil webpage from accessing private information or harming the user's data.
100
+
>>>>>>> 34a80e70f8cce5794be259d25f815d7a7db7cbe3
71
101
72
102
- Hər hansı bir web səhifədəki JavaScript sizin sərt diskinizdəki ixtiyari faylları yarada, silə, dəyişə və ya icra edə bilməz. Onun sizin əməliyyat sisteminin funksiyalarına bir başa çıxışı yoxdur.
73
103
104
+
<<<<<<< HEAD
74
105
Müasir brauzerlər fayllarla işləməyə imkan yaradır lakin bu əməliyyat `<input>` etiketi vasitəsilə sayta fayl yükləməkdən başqa bir şeyə imkan yaratmır.
106
+
=======
107
+
- JavaScript on a webpage may not read/write arbitrary files on the hard disk, copy them or execute programs. It has no direct access to OS functions.
108
+
>>>>>>> 34a80e70f8cce5794be259d25f815d7a7db7cbe3
75
109
76
110
Bununla bərarbər, brauzer sizə kamera və mikrofon kimi cihazlarlə işləmək imkanı yaradır lakin bu əməliyyatları istifadəçinin bir başa icazəsi olmadan etmək qeyri-mümkündür. Yəni evdə hər hansı bir işlə məşğul olanda kimsə sizi hansısa web səhifədən izləyə bilməz, bunun üçün siz brauzerə icazə verməlisiniz.
77
111
112
+
<<<<<<< HEAD
78
113
- Fərqli pəncərələr və tablar normalda bir-biri haqqında heç nə bilmirlər. Əgər, siz JavaScript-i istifadə edərək, başqa bir pəncərə açsanız, bu halda açdığınız pəncərə və cari pəncərə fərqli mənbələrdəndirsə (fərqli domen adı, fərqli protokol və ya port) bir pəncərənin digər pəncərəyə heç bir çıxışı yoxdur.
79
114
80
115
Bu eyni mənbə siyasəti adlandırılır (Same Origin Policy). Yalnız hər iki səhifə müəyyən protokol üzərindən razılaşdığı halda bir-birinin resurslarından istifadə edə bilərlər.
@@ -84,41 +119,85 @@ Bu cür limitlərə aşağıdakılar daxildir:
84
119

85
120
86
121
Bu cür məhdudiyyətlər sadəcə brauzer daxilində mövcuddur, daha öncə də qeyd etdiyimiz kimi JavaScript-in imkanları mühitə görə dəyişir.
122
+
=======
123
+
There are ways to interact with the camera/microphone and other devices, but they require a user's explicit permission. So a JavaScript-enabled page may not sneakily enable a web-camera, observe the surroundings and send the information to the [NSA](https://en.wikipedia.org/wiki/National_Security_Agency).
124
+
- Different tabs/windows generally do not know about each other. Sometimes they do, for example when one window uses JavaScript to open the other one. But even in this case, JavaScript from one page may not access the other page if they come from different sites (from a different domain, protocol or port).
125
+
126
+
This is called the "Same Origin Policy". To work around that, *both pages* must agree for data exchange and must contain special JavaScript code that handles it. We'll cover that in the tutorial.
127
+
128
+
This limitation is, again, for the user's safety. A page from `http://anysite.com` which a user has opened must not be able to access another browser tab with the URL `http://gmail.com`, for example, and steal information from there.
129
+
- JavaScript can easily communicate over the net to the server where the current page came from. But its ability to receive data from other sites/domains is crippled. Though possible, it requires explicit agreement (expressed in HTTP headers) from the remote side. Once again, that's a safety limitation.
130
+
131
+

132
+
133
+
Such limitations do not exist if JavaScript is used outside of the browser, for example on a server. Modern browsers also allow plugins/extensions which may ask for extended permissions.
134
+
>>>>>>> 34a80e70f8cce5794be259d25f815d7a7db7cbe3
87
135
88
136
## JavaScript-i unikal edən nədir?
89
137
90
138
Aşağıdakılar, JavaScript-i unikal edən ən az üç şeydir:
91
139
92
140
```compare
141
+
<<<<<<< HEAD
93
142
+ HTML/CSS ilə tam inteqrasiya.
94
143
+ Sadə şeylər sadəliklə icra olunur.
95
144
+ Əksər brauzerlər tərəfindən dəstəklənir və defolt olaraq aktivdir.
145
+
=======
146
+
+ Full integration with HTML/CSS.
147
+
+ Simple things are done simply.
148
+
+ Supported by all major browsers and enabled by default.
149
+
>>>>>>> 34a80e70f8cce5794be259d25f815d7a7db7cbe3
96
150
```
97
151
98
152
Bu üç xüsusiyyəti özündə birləşdirən yegənə texnologiya JavaScript-dir.
99
153
154
+
<<<<<<< HEAD
100
155
Məhz bu səbəbdən, JavaScript unikaldır və ən çox yayılmış proqramlaşdırma dillərindəndir.
156
+
=======
157
+
That said, JavaScript can be used to create servers, mobile applications, etc.
158
+
>>>>>>> 34a80e70f8cce5794be259d25f815d7a7db7cbe3
101
159
102
160
Yeri gəlmişək, onu da qeyd etmək lazımdır ki, JavaScript ilə mobil tətbiqlər və serverlər də yarada bilərsiniz.
103
161
104
162
## JavaScript "üzərində" dillər
105
163
106
164
JavaScript-in sintaksisi hamının ehtiyaclarını ödəmir. Müxtəlif insanlar, müxtəlif funksionallıqlar tələb edir.
107
165
166
+
<<<<<<< HEAD
108
167
Təbii ki, bu normaldır, çünki layihələr və tələblər hamı üçün fərqlidir.
168
+
=======
169
+
So, recently a plethora of new languages appeared, which are *transpiled* (converted) to JavaScript before they run in the browser.
170
+
>>>>>>> 34a80e70f8cce5794be259d25f815d7a7db7cbe3
109
171
110
172
Son zamanlarda, JavaScript-ə çevrilən (transpiled) bir çox dillər meydana gəlmişdir. Onlar, yalnız development mühitində fərqli funksionallıqlar irəli sürür lakin, daha sonra brauzerdə işləyə bilmək üçün JavaScript-ə çevrilməlidir.
111
173
112
174
Belə dillərə nümunə olaraq aşağıdakıları göstərmək olar:
113
175
176
+
<<<<<<< HEAD
114
177
-[CoffeeScript](http://coffeescript.org/) JavaScript üçün "Sintaktik şəkərdir"(syntactic sugar) və daha qısa və anlaşıqlı sintaksis ortaya qoyur. Adətən Ruby developerlər onu sevir.
115
178
-[TypeScript](http://www.typescriptlang.org/) JavaScript-ə strict type sistemi əlavə edir və development zamanı bəzi bugların qarşısını alır, çox vaxt performansda da qazandırır. TypeScript Microsoft tərəfindən yaradılmışdır və maintain edilir.
116
179
-[Flow](http://flow.org/) həmçinin strict type sistemi əlavə edir lakin başqa yol ilə. Facebook tərəfindən yaradılmışdır.
117
180
118
181
Təbii ki, belə dillər daha çoxdur. Lakin bu dilləri başa düşmək üçün əvvəlcə JavaScript-i tam anlamaq şərtdir.
182
+
=======
183
+
-[CoffeeScript](https://coffeescript.org/) is "syntactic sugar" for JavaScript. It introduces shorter syntax, allowing us to write clearer and more precise code. Usually, Ruby devs like it.
184
+
-[TypeScript](https://www.typescriptlang.org/) is concentrated on adding "strict data typing" to simplify the development and support of complex systems. It is developed by Microsoft.
185
+
-[Flow](https://flow.org/) also adds data typing, but in a different way. Developed by Facebook.
186
+
-[Dart](https://www.dartlang.org/) is a standalone language that has its own engine that runs in non-browser environments (like mobile apps), but also can be transpiled to JavaScript. Developed by Google.
187
+
-[Brython](https://brython.info/) is a Python transpiler to JavaScript that enables the writing of applications in pure Python without JavaScript.
188
+
-[Kotlin](https://kotlinlang.org/docs/reference/js-overview.html) is a modern, concise and safe programming language that can target the browser or Node.
189
+
190
+
There are more. Of course, even if we use one of these transpiled languages, we should also know JavaScript to really understand what we're doing.
191
+
>>>>>>> 34a80e70f8cce5794be259d25f815d7a7db7cbe3
119
192
120
193
## Xülasə
121
194
195
+
<<<<<<< HEAD
122
196
- JavaScript ilkin olaraq yalnız brauzerlər üçün yaradılmış, lakin sonradan başqa mühitlərdə də istifadə olunmağa başlamışdır.
123
197
- Günümüzdə JavaScript HTML və CSS ilə tam inteqrasiya oluna bilər, geniş yayılmış unikal bir proqramlaşdırma dilidir.
124
198
- JavaScript-ə çevrilən və yeni funksionallıqlar təqdim edən bir çox dillər mövcuddur. Bu dillərdən bəzilərinə nəzər salmaq tövsiyyə olunur. Misalçün, JavaScript-i tam başa düşdükdən sonra TypeScript-dən başlaya bilərsiniz.
199
+
=======
200
+
- JavaScript was initially created as a browser-only language, but it is now used in many other environments as well.
201
+
- Today, JavaScript has a unique position as the most widely-adopted browser language, fully integrated with HTML/CSS.
202
+
- There are many languages that get "transpiled" to JavaScript and provide certain features. It is recommended to take a look at them, at least briefly, after mastering JavaScript.
Copy file name to clipboardExpand all lines: 1-js/01-getting-started/2-manuals-specifications/article.md
+29
Original file line number
Diff line number
Diff line change
@@ -2,22 +2,35 @@
2
2
3
3
Bu kitab sizin dil ilə tanışlığınıza və onu tədricən öyrənməyinizə yönəlmiş bir dərslikdir. Lakin dilin əsasları ilə tam tanış olduqdan sonra artıq başqa mənbələrə də ehtiyac duyacaqsınız. Gəlin bu cür mənbələrlə tanış olaq.
4
4
5
+
<<<<<<< HEAD
5
6
## Spesifikasiyalar
7
+
=======
8
+
This book is a *tutorial*. It aims to help you gradually learn the language. But once you're familiar with the basics, you'll need other resources.
9
+
>>>>>>> 34a80e70f8cce5794be259d25f815d7a7db7cbe3
6
10
7
11
[ECMA-262 standartları](https://www.ecma-international.org/publications/standards/Ecma-262.htm) JavaScript haqqında ən dərin, detallı və formal məlumatları ehtiva edir. Başqa sözlə desək, dili təyin edir.
8
12
9
13
Lakin bu spesifikasiyalar çox formal olduğu üçün bəzən anlaşılması çətin ola bilər. Spesifikasiyalar, JavaScript haqqında tapa biləcəyiniz ən güvənli və dəqiq məlumat mənbəyidir, hərçənd günlük istifadə üçün deyil.
10
14
11
15
Spesifikasiyanın hər il yeri versiyası yayımlanır. Ən son versiyası ilə [burada](https://tc39.es/ecma262/) tanış ola bilərsiniz.
12
16
17
+
<<<<<<< HEAD
13
18
ECMA-262 standartlarına il boyunca yeni təkliflər verilir, bu təkliflər bir neçə mərhələdən keçdikdən sonra dilə əlavə olunur (standartlaşdırlır). Ən son təkliflər və "demək olar ki standartlaşdırılmış" (stage 3 proposals) xüsusiyyətlər ilə [burada](https://github.com/tc39/proposals) tanış ola bilərsiniz.
19
+
=======
20
+
A new specification version is released every year. Between these releases, the latest specification draft is at <https://tc39.es/ecma262/>.
21
+
>>>>>>> 34a80e70f8cce5794be259d25f815d7a7db7cbe3
14
22
15
23
Bununla bərabar, əgər JavaScripti brauzer daxilində istifadə edirsinizsə bunun üçün başqa standartlar mövcuddur. Bu barədə dərsliyin [ikinci hissəsində](info:browser-environment) danışacağıq.
16
24
25
+
<<<<<<< HEAD
17
26
## Manuallar
27
+
=======
28
+
Also, if you're developing for the browser, then there are other specifications covered in the [second part](info:browser-environment) of the tutorial.
29
+
>>>>>>> 34a80e70f8cce5794be259d25f815d7a7db7cbe3
18
30
19
31
-**MDN (Mozilla) JavaScript Reference**, nümunələr və digər məlumatlarla tanış ola biləcəyiniz başqa bir mənbədir. MDN, spesifik funksiya, obyektlər, metodlar və s. haqqında dərin məlumat əldə etmək və nümunələrlə tanış olmaq üçün əla yerdir.
20
32
33
+
<<<<<<< HEAD
21
34
Elə indi bu keçiddən istifadə edib baxmağınız tövsiyyə olunur: <https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference>.
22
35
23
36
Keçidə daxil olduqdan sonra sizin üçün axtardığınız şeyi tapmaq bir az çətin ola bilər. Bu səbəbdən, çox vaxt Google-da axtarış etmək daha əlverişli olar bilər. Misalçün, deyək ki, `parseInt` funksiyası haqqında ətraflı məlumat almaq istəyirsiniz, bunun üçün <https://google.com/search?q=MDN+parseInt> kimi axtarış edə bilərsiniz.
@@ -29,6 +42,13 @@ Bununla bərabar, əgər JavaScripti brauzer daxilində istifadə edirsinizsə b
29
42
## Brauzer dəstəyi və uyğunluq cədvəlləri
30
43
31
44
JavaScript iknişafda olan bir dil olduğu üçün müntəzəm olaraq yeni xüsusiyyətlər əlavə olunur.
45
+
=======
46
+
-**MDN (Mozilla) JavaScript Reference** is the main manual with examples and other information. It's great to get in-depth information about individual language functions, methods etc.
47
+
48
+
You can find it at <https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference>.
49
+
50
+
Although, it's often best to use an internet search instead. Just use "MDN [term]" in the query, e.g. <https://google.com/search?q=MDN+parseInt> to search for the `parseInt` function.
51
+
>>>>>>> 34a80e70f8cce5794be259d25f815d7a7db7cbe3
32
52
33
53
Bu cür xüsusiyyətlərin müxtəlif brauzerlər və engine-lər tərəfindən nə dərəcədə dəstəkləndiyini öyrənmək üçün aşağıdakı resurslardan istifadə edin:
34
54
@@ -37,4 +57,13 @@ Bu cür xüsusiyyətlərin müxtəlif brauzerlər və engine-lər tərəfindən
37
57
38
58
Bütün bu resurslar, dil haqqında müəyyən detallar onların nə dərəcədə dəstəklənib dəstəklənmədiyi və s. kimi dəyərli məlumatlarla zəngin olduğu üçün real iş mühitində çox işinizə yaraya bilər.
39
59
60
+
<<<<<<< HEAD
40
61
Onları yadda saxlamağınız və detallı məlumat üçün onlara istinad etməyiniz vacibdir.
62
+
=======
63
+
-<https://caniuse.com> - per-feature tables of support, e.g. to see which engines support modern cryptography functions: <https://caniuse.com/#feat=cryptography>.
64
+
-<https://kangax.github.io/compat-table> - a table with language features and engines that support those or don't support.
65
+
66
+
All these resources are useful in real-life development, as they contain valuable information about language details, their support, etc.
67
+
68
+
Please remember them (or this page) for the cases when you need in-depth information about a particular feature.
0 commit comments