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/02-first-steps/08-operators/article.md
+38-38Lines changed: 38 additions & 38 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -277,9 +277,9 @@ a = c;
277
277
278
278
Айрыкча кодду тез карап жатканда, муну окууга оңоюраак.
279
279
280
-
## Modify-in-place
280
+
## "Өзгөртүү жана ыйгаруу" оператору
281
281
282
-
We often need to apply an operator to a variable and store the newresultin that same variable.
282
+
Биз көп учурда өзгөрмөгө операторду колдонушубуз керек жана жаңы натыйжаны ошол эле өзгөрмөдө сакташыбыз керек.
283
283
284
284
Мисалы:
285
285
@@ -289,24 +289,24 @@ n = n + 5;
289
289
n = n * 2;
290
290
```
291
291
292
-
This notation can be shortened using the operators `+=`and`*=`:
292
+
Бул жазууну `+=`жана`*=` операторлорунун жардамы менен кыскартууга болот:
293
293
294
294
```js run
295
295
let n = 2;
296
-
n += 5; // now n = 7 (same as n = n + 5)
297
-
n *= 2; // now n = 14 (same as n = n * 2)
296
+
n += 5; // эми n = 7 (n = n + 5 менен бирдей)
297
+
n *= 2; // эми n = 14 (n = n * 2 менен бирдей)
298
298
299
299
alert( n ); // 14
300
300
```
301
301
302
-
Short "modify-and-assign" operators exist for all arithmetical and bitwise operators:`/=`, `-=`, etc.
302
+
Кыска "өзгөртүү жана ыйгаруу" операторлору бардык арифметикалык жана биттик операторлор үчүн бар:`/=`, `-=` ж.б.
303
303
304
-
Such operators have the same precedence as a normal assignment, so they run after most other calculations:
304
+
Мындай операторлор кадимки ыйгаруу сыяктуу эле алгачкылыкка ээ, андыктан алар башка көптөгөн эсептөөлөрдөн кийин аткарылат:
305
305
306
306
```js run
307
307
let n = 2;
308
308
309
-
n *= 3 + 5; // right part evaluated first, same as n *= 8
309
+
n *= 3 + 5; // алгач оң бөлүгү эсептелинет, n *= 8 менен бирдей
310
310
311
311
alert( n ); // 16
312
312
```
@@ -315,7 +315,7 @@ alert( n ); // 16
315
315
316
316
<!-- Can't use -- in title, because the built-in parser turns it into a 'long dash' – -->
317
317
318
-
Increasing or decreasing a number by one is among the most common numerical operations.
318
+
Санды бирге көбөйтүү же азайтуу эң кеңири таралган сандык операциялардын бири болуп саналат.
319
319
320
320
Ал үчүн атайын операторлор бар:
321
321
@@ -335,21 +335,21 @@ Increasing or decreasing a number by one is among the most common numerical oper
335
335
```
336
336
337
337
```warn
338
-
Increment/decrement can only be applied to variables. Trying to use it on a value like `5++` will give an error.
338
+
Инкремент/декремент өзгөрмөлөргө гана колдонулушу мүмкүн. Аны `5++` сыяктуу мааниде колдонууга аракет кылуу катага алып келет.
339
339
```
340
340
341
-
The operators `++` and `--` can be placed either before or after a variable.
341
+
`++` жана `--` операторлору өзгөрмөнүн алдында же өзгөрмөдөн кийин жайгаштырылышы мүмкүн.
342
342
343
-
- When the operator goes after the variable, it is in "postfix form": `counter++`.
344
-
- The "prefix form" is when the operator goes before the variable: `++counter`.
343
+
- Оператор өзгөрмөдөн кийин келгенде, ал "постфикс формасында" болот: `counter++`.
344
+
- "Префикс формасы" оператор өзгөрмөнүн алдына келгенде болот: `++counter`.
345
345
346
-
Both of these statements do the same thing: increase `counter` by `1`.
346
+
Бул эки нускама тең бирдей нерсени аткарат: `counter` өзгөрмөсүн `1`ге көбөйтөт.
347
347
348
-
Is there any difference? Yes, but we can only see it if we use the returned value of `++/--`.
348
+
Айырмасы барбы? Ооба, бирок биз аны `++/--` кайтарган маанисин колдонсок гана көрө алабыз.
349
349
350
-
Let's clarify. As we know, all operators return a value. Increment/decrement is no exception. The prefix form returns the newvaluewhile the postfix form returns the old value (prior to increment/decrement).
350
+
Келгиле, тактап алалы. Белгилүү болгондой, бардык операторлор маанини кайтарышат. Инкремент/декремент да бөтөнчө эмес. Префикс формасы жаңы маанини кайтарат, ал эми постфикс формасы эски маанини кайтарат (санды көбөйтүүгө/азайтууга чейин).
351
351
352
-
Айырмачылыгын көрүү үчүн, мына мисал:
352
+
Айырмасын көрүү үчүн, мисал келтирели:
353
353
354
354
```js run
355
355
let counter = 1;
@@ -358,7 +358,7 @@ let a = ++counter; // (*)
358
358
alert(a); // *!*2*/!*
359
359
```
360
360
361
-
In the line `(*)`, the *prefix* form`++counter`increments `counter` and returns the newvalue, `2`. So, the `alert`shows `2`.
361
+
`(*)` сабында *префикс* формасы `++counter` `counter`'ди көбөйтөт жана жаңы `2` маанисин кайтарат. Ошентип, `alert``2`ни көрсөтөт.
362
362
363
363
Эми постфикс формасын колдонолу:
364
364
@@ -369,53 +369,53 @@ let a = counter++; // (*) ++counter counter++'ка алмашты
369
369
alert(a); // *!*1*/!*
370
370
```
371
371
372
-
In the line `(*)`, the *postfix* form`counter++`also increments `counter` but returns the *old*value (prior to increment). So, the `alert`shows `1`.
372
+
`(*)` сабында *постфикс* формасы`counter++`да `counter`'ди көбөйтөт, бирок *эски* (көбөйтүүгө чейинки) маанисин кайтарат. Ошентип, `alert` `1`ди көрсөтөт.
373
373
374
374
Жыйынтыктайлы:
375
375
376
-
-If the result of increment/decrement is not used, there is no difference in which form to use:
376
+
- Эгерде көбөйтүүнүн/азайтуунун натыйжасы колдонулбаса, анда кайсы форманы колдонуунун айырмасы жок:
377
377
378
378
```js run
379
379
let counter = 0;
380
380
counter++;
381
381
++counter;
382
-
alert( counter ); // 2, the lines above did the same
382
+
alert( counter ); // 2, жогорудагы саптар бирдей нерсени кылышты
383
383
```
384
-
-If we'd like to increase a value *and* immediately use the result of the operator, we need the prefix form:
384
+
- Эгерде биз маанини көбөйтүүнү *жана* оператордун натыйжасын колдонууну кааласак, бизге префикс формасы керек:
385
385
386
386
```js run
387
387
let counter = 0;
388
388
alert( ++counter ); // 1
389
389
```
390
-
- If we'd like to increment a value but use its previous value, we need the postfix form:
390
+
- Эгерде биз маанини көбөйтүүнү, бирок анын мурунку маанисин колдонууну кааласак, бизге постфикс формасы керек:
391
391
392
392
```js run
393
393
let counter = 0;
394
394
alert( counter++ ); // 0
395
395
```
396
396
397
-
````smart header="Increment/decrement among other operators"
398
-
The operators `++/--`can be used inside expressions as well. Their precedence is higher than most other arithmetical operations.
397
+
````smart header="Башка операторлордун арасындагы инкремент/декремент"
398
+
`++/--` операторлору туюнтмалардын ичинде да колдонулушу мүмкүн. Алардын алгачкылыгы башка арифметикалык операциялардын көбүнө караганда жогору.
399
399
400
-
For instance:
400
+
Мисалы үчүн:
401
401
402
402
```js run
403
403
let counter = 1;
404
404
alert( 2 * ++counter ); // 4
405
405
```
406
406
407
-
Compare with:
407
+
Төмөндөгү менен салыштырыңыз:
408
408
409
409
```js run
410
410
let counter = 1;
411
-
alert( 2 * counter++ ); // 2, because counter++ returns the "old" value
411
+
alert( 2 * counter++ ); // 2, себеби counter++ "эски" маанисин кайтарат
412
412
```
413
413
414
-
Though technically okay, such notation usually makes code less readable. One line does multiple things--not good.
414
+
Техникалык жактан түзүк болгону менен, мындай жазуу адатта коддун окулушун начарлатат. Бир сап көп нерсени аткарса -- бул жакшы эмес.
415
415
416
-
While reading code, a fast "vertical" eye-scan can easily miss something like `counter++`and it won't be obvious that the variable increased.
416
+
Кодду окуп жатканда, тез "вертикалдуу" сканерлөө `counter++` сыяктуу нерселерди оңой эле өткөрүп жибериши мүмкүн жана өзгөрмө жогорулатылганы анык болбойт.
417
417
418
-
We advise a style of "one line -- one action":
418
+
Биз "бир сап -- бир аракет" стилин сунуштайбыз:
419
419
420
420
```js run
421
421
let counter = 1;
@@ -434,19 +434,19 @@ counter++;
434
434
435
435
- AND(жана) ( `&` )
436
436
- OR(же) ( `|` )
437
-
- XOR(биттик бөтөнчөлүү же) ( `^` )
437
+
- XOR(биттик бөтөнчөлөгөн же) ( `^` )
438
438
- NOT(эмес) ( `~` )
439
439
- LEFT SHIFT(солго жылдыруу) ( `<<` )
440
440
- RIGHT SHIFT(оңго жылдыруу) ( `>>` )
441
441
- ZERO-FILL RIGHT SHIFT(нөлдөр менен толтуруу менен оңго жылдыруу) ( `>>>` )
442
442
443
-
These operators are used very rarely, when we need to fiddle with numbers on the very lowest (bitwise) level. We won't need these operators any time soon, as web development has little use of them, but in some special areas, such as cryptography, they are useful. You can read the [Bitwise Operators](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Guide/Expressions_and_Operators#bitwise_operators) chapter on MDN when a need arises.
443
+
Биз сандар менен эң төмөнкү (биттик) деңгээлде иштеш керек болгондо бул операторлор өтө сейрек колдонулат. Жакын арада бизге бул операторлордун кереги жок, анткени веб иштеп чыгуучулар аларды аз колдонушат, бирок криптография сыяктуу кээ бир өзгөчө тармактарда алар пайдалуу болот. Зарылчылык жаралганда MDN'деги [Bitwise Operators](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Guide/Expressions_and_Operators#bitwise_operators) бөлүмүн окуй аласыз.
444
444
445
445
## Үтүр
446
446
447
-
The comma operator `,`is one of the rarest and most unusual operators. Sometimes, it's used to write shorter code, so we need to know it in order to understand what's going on.
447
+
Үтүр оператору `,`эң сейрек кездешүүчү жана адаттан тыш операторлордун бири. Кээде ал кыскараак код жазуу үчүн колдонулат, андыктан эмне болуп жатканын түшүнүү үчүн аны билишибиз керек.
448
448
449
-
The comma operator allows us to evaluate several expressions, dividing them with a comma `,`. Eachof them is evaluated but only the result of the last one is returned.
449
+
Үтүр оператору бизге бир нече туюнтмаларды үтүр `,` менен бөлүп аткарууга мүмкүндүк берет. Алардын ар бири аткарылат, бирок акыркысынын натыйжасы гана кайтарылат.
Here, the first expression `1 + 2` is evaluated and its result is thrown away. Then, `3 + 4` is evaluated and returned as the result.
462
462
463
-
```smart header="Comma has a very low precedence"
463
+
```smart header="Үтүр өтө төмөн алгачкылыкка ээ"
464
464
Please note that the comma operator has very low precedence, lower than `=`, so parentheses are important in the example above.
465
465
466
466
Without them: `a =1+2, 3+4` evaluates `+` first, summing the numbers into `a =3, 7`, then the assignment operator `=` assigns `a =3`, and the rest is ignored. It's like `(a =1+2), 3+4`.
@@ -473,10 +473,10 @@ Sometimes, people use it in more complex constructs to put several actions in on
473
473
Мисалы:
474
474
475
475
```js
476
-
// three operations in one line
476
+
// бир сапта үч операция
477
477
for (*!*a = 1, b = 3, c = a * b*/!*; a < 10; a++) {
478
478
...
479
479
}
480
480
```
481
481
482
-
Such tricks are used in many JavaScript frameworks. That's why we're mentioning them. But usually they don't improve code readability so we should think well before using them.
482
+
Мындай трюктар көптөгөн JavaScript фреймворкторунда колдонулат. Ошондуктан биз аларды белгилеп жатабыз. Бирок, адатта, алар коддун окулушун жакшыртпайт, андыктан аларды колдонуудан мурун жакшылап ойлонушубуз керек.
0 commit comments