|
392 | 392 | // на изпълненото фунционално извикване и думата "function"
|
393 | 393 | });
|
394 | 394 |
|
395 |
| - // Function accepting an array, no space |
| 395 | + // Функция приемаща масив като параметър, без интервал |
396 | 396 | foo([ "alpha", "beta" ]);
|
397 | 397 |
|
398 | 398 | // 2.C.1.2
|
399 |
| - // Function accepting an object, no space |
| 399 | + // Функция приемаща обект като параметър, без интервал |
400 | 400 | foo({
|
401 | 401 | a: "alpha",
|
402 | 402 | b: "beta"
|
403 | 403 | });
|
404 | 404 |
|
405 |
| - // Single argument string literal, no space |
| 405 | + // Единичен низ като параметър, също без интервал |
406 | 406 | foo("bar");
|
407 | 407 |
|
408 |
| - // Expression parens, no space |
| 408 | + // Вътрешни скоби, също без интервал |
409 | 409 | if ( !("foo" in obj) ) {
|
410 | 410 | obj = (obj.bar || defaults).baz;
|
411 | 411 | }
|
412 | 412 |
|
413 | 413 | ```
|
414 | 414 |
|
415 |
| - D. Consistency Always Wins |
| 415 | + D. Консистентността винаги побеждава |
416 | 416 |
|
417 |
| - In sections 2.A-2.C, the whitespace rules are set forth as a recommendation with a simpler, higher purpose: consistency. |
418 |
| - It's important to note that formatting preferences, such as "inner whitespace" should be considered optional, but only one style should exist across the entire source of your project. |
| 417 | + В секции 2.A-2.C, правилата за интервали са изложени като препоръка с по-проста и по-извисена цел: консистентност. |
| 418 | + Важно е да се отбележи, че предпочитанията за форматиране, такива като "вътрешно пространстро", трябва да се считат за незадължителни, но само един стил трябва да съществува из целия код на вашия проект. |
419 | 419 |
|
420 | 420 | ```javascript
|
421 | 421 |
|
422 | 422 | // 2.D.1.1
|
423 | 423 |
|
424 | 424 | if (condition) {
|
425 |
| - // statements |
| 425 | + // изрази |
426 | 426 | }
|
427 | 427 |
|
428 | 428 | while (condition) {
|
429 |
| - // statements |
| 429 | + // изрази |
430 | 430 | }
|
431 | 431 |
|
432 | 432 | for (var i = 0; i < 100; i++) {
|
433 |
| - // statements |
| 433 | + // изрази |
434 | 434 | }
|
435 | 435 |
|
436 | 436 | if (true) {
|
437 |
| - // statements |
| 437 | + // изрази |
438 | 438 | } else {
|
439 |
| - // statements |
| 439 | + // изрази |
440 | 440 | }
|
441 | 441 |
|
442 | 442 | ```
|
443 | 443 |
|
444 |
| - E. Quotes |
| 444 | + E. Кавички |
| 445 | + |
| 446 | + Независимо от това дали предпочитате единични или двойни кавички, няма разлика в това как JavaScript ги парсва. Това което **АБСОЛЮТНО ТРЯБВА** да се наложи е консистентност. **Никога не смесвайте кавичките в един и същи проект. Изберете един стил и се придържайте към него.** |
445 | 447 |
|
446 |
| - Whether you prefer single or double shouldn't matter, there is no difference in how JavaScript parses them. What **ABSOLUTELY MUST** be enforced is consistency. **Never mix quotes in the same project. Pick one style and stick with it.** |
| 448 | + F. Край на Редовете и Празни Редове |
447 | 449 |
|
448 |
| - F. End of Lines and Empty Lines |
| 450 | + Пространствата могат да развалят разликите да направят промените невъзможни за четене. Помислете да включите "pre-commit" кука, която да премахне автоматично пространството на края на реда и празните пространства на редовете. |
449 | 451 |
|
450 |
| - Whitespace can ruin diffs and make changesets impossible to read. Consider incorporating a pre-commit hook that removes end-of-line whitespace and blanks spaces on empty lines automatically. |
451 | 452 |
|
452 | 453 | 3. <a name="type">Type Checking (Courtesy jQuery Core Style Guidelines)</a>
|
453 | 454 |
|
454 |
| - A. Actual Types |
| 455 | + A. Типове |
455 | 456 |
|
456 | 457 | String:
|
457 | 458 |
|
|
488 | 489 |
|
489 | 490 | undefined:
|
490 | 491 |
|
491 |
| - Global Variables: |
| 492 | + Глобални променливи: |
492 | 493 |
|
493 | 494 | typeof variable === "undefined"
|
494 | 495 |
|
495 |
| - Local Variables: |
| 496 | + Локални променливи: |
496 | 497 |
|
497 | 498 | variable === undefined
|
498 | 499 |
|
499 |
| - Properties: |
| 500 | + Свойства: |
500 | 501 |
|
501 | 502 | object.prop === undefined
|
502 | 503 | object.hasOwnProperty( prop )
|
503 | 504 | "prop" in object
|
504 | 505 |
|
505 |
| - B. Coerced Types |
| 506 | + B. Прехвърляне на Типове |
506 | 507 |
|
507 |
| - Consider the implications of the following... |
| 508 | + Представете си следното... |
508 | 509 |
|
509 |
| - Given this HTML: |
| 510 | + Даден ви е следния HTML: |
510 | 511 |
|
511 | 512 | ```html
|
512 | 513 |
|
|
519 | 520 |
|
520 | 521 | // 3.B.1.1
|
521 | 522 |
|
522 |
| - // `foo` has been declared with the value `0` and its type is `number` |
| 523 | + // `foo` е деклариран със стойност `0` и неговия тип е `number` |
523 | 524 | var foo = 0;
|
524 | 525 |
|
525 | 526 | // typeof foo;
|
526 | 527 | // "number"
|
527 | 528 | ...
|
528 | 529 |
|
529 |
| - // Somewhere later in your code, you need to update `foo` |
530 |
| - // with a new value derived from an input element |
| 530 | + // Някъде по-късно във вашия код, трябва да обновите `foo` |
| 531 | + // с ново стойност взета от елемента 'input' |
531 | 532 |
|
532 | 533 | foo = document.getElementById("foo-input").value;
|
533 | 534 |
|
534 |
| - // If you were to test `typeof foo` now, the result would be `string` |
535 |
| - // This means that if you had logic that tested `foo` like: |
536 |
| -
|
| 535 | + // Ако сега тествате 'typeof foo`, резултатът ще бъде 'string' |
| 536 | + // Това означава, че ако имате локига която тества 'foo' като тази: |
537 | 537 | if ( foo === 1 ) {
|
538 | 538 |
|
539 | 539 | importantTask();
|
540 | 540 |
|
541 | 541 | }
|
542 | 542 |
|
543 |
| - // `importantTask()` would never be evaluated, even though `foo` has a value of "1" |
544 |
| -
|
| 543 | + // `importantTask()` няма никога да бъде достигнат дори и `foo` да има стойност "1" |
545 | 544 |
|
546 | 545 | // 3.B.1.2
|
547 | 546 |
|
548 |
| - // You can preempt issues by using smart coercion with unary + or - operators: |
| 547 | + // Можете да избегнете проблеми като използвате умно конрвертиране в унарните оператори + и -: |
549 | 548 |
|
550 | 549 | foo = +document.getElementById("foo-input").value;
|
551 |
| - // ^ unary + operator will convert its right side operand to a number |
| 550 | + // ^ унарния + ще преобразува десния си операнд в тип 'number' |
552 | 551 |
|
553 | 552 | // typeof foo;
|
554 | 553 | // "number"
|
|
559 | 558 |
|
560 | 559 | }
|
561 | 560 |
|
562 |
| - // `importantTask()` will be called |
| 561 | + // `importantTask()` ще бъде извикана |
563 | 562 | ```
|
564 | 563 |
|
565 | 564 | Here are some common cases along with coercions:
|
|
648 | 647 | !!~array.indexOf("d");
|
649 | 648 | // false
|
650 | 649 |
|
651 |
| - // Note that the above should be considered "unnecessarily clever" |
652 |
| - // Prefer the obvious approach of comparing the returned value of |
653 |
| - // indexOf, like: |
| 650 | + // Забележете, че горните примери може да се считат за "ненужно умни" |
| 651 | + // За предпочитане е очевидния подход да сравнявате върнатата стойност на |
| 652 | + // indexOf, по този начин: |
654 | 653 |
|
655 | 654 | if ( array.indexOf( "a" ) >= 0 ) {
|
656 | 655 | // ...
|
|
665 | 664 |
|
666 | 665 | parseInt( num, 10 );
|
667 | 666 |
|
668 |
| - // is the same as... |
| 667 | + // е съшото като ... |
669 | 668 |
|
670 | 669 | ~~num;
|
671 | 670 |
|
|
676 | 675 | // All result in 2
|
677 | 676 |
|
678 | 677 |
|
679 |
| - // Keep in mind however, that negative numbers will be treated differently... |
| 678 | + // Помнете, че отрицателните числа ще бъдат обработени различно ... |
680 | 679 |
|
681 | 680 | var neg = -2.5;
|
682 | 681 |
|
683 | 682 | parseInt( neg, 10 );
|
684 | 683 |
|
685 |
| - // is the same as... |
| 684 | + // е същото като... |
686 | 685 |
|
687 | 686 | ~~neg;
|
688 | 687 |
|
689 | 688 | neg >> 0;
|
690 | 689 |
|
691 |
| - // All result in -2 |
692 |
| - // However... |
| 690 | + // Всичко са равни на -2 |
| 691 | + // Въпреки че при... |
693 | 692 |
|
694 | 693 | neg >>> 0;
|
695 | 694 |
|
696 |
| - // Will result in 4294967294 |
| 695 | + // Резултата ще е 4294967294 |
697 | 696 |
|
698 | 697 |
|
699 | 698 |
|
|
702 | 701 |
|
703 | 702 |
|
704 | 703 |
|
705 |
| -4. <a name="cond">Conditional Evaluation</a> |
| 704 | +4. <a name="cond">Условна Проверка</a> |
706 | 705 |
|
707 | 706 | ```javascript
|
708 | 707 |
|
709 | 708 | // 4.1.1
|
710 |
| - // When only evaluating that an array has length, |
711 |
| - // instead of this: |
| 709 | + // Проверете дали масивът има дължина, |
| 710 | + // вместо: |
712 | 711 | if ( array.length > 0 ) ...
|
713 | 712 |
|
714 |
| - // ...evaluate truthiness, like this: |
| 713 | + // ...проверявайте за истина, по този начин: |
715 | 714 | if ( array.length ) ...
|
716 | 715 |
|
717 | 716 |
|
718 | 717 | // 4.1.2
|
719 |
| - // When only evaluating that an array is empty, |
720 |
| - // instead of this: |
| 718 | + // Проверете дали масива е празен, |
| 719 | + // вместо: |
721 | 720 | if ( array.length === 0 ) ...
|
722 | 721 |
|
723 |
| - // ...evaluate truthiness, like this: |
| 722 | + // ...проверявайте за вярност, по този начин: |
724 | 723 | if ( !array.length ) ...
|
725 | 724 |
|
726 | 725 |
|
727 | 726 | // 4.1.3
|
728 |
| - // When only evaluating that a string is not empty, |
729 |
| - // instead of this: |
| 727 | + // Проверете дали низа не е празен, |
| 728 | + // вместо: |
| 729 | +
|
730 | 730 | if ( string !== "" ) ...
|
731 | 731 |
|
732 |
| - // ...evaluate truthiness, like this: |
| 732 | + // ...проверявайте за вярност, по този начин: |
733 | 733 | if ( string ) ...
|
734 | 734 |
|
735 | 735 |
|
736 | 736 | // 4.1.4
|
737 |
| - // When only evaluating that a string _is_ empty, |
738 |
| - // instead of this: |
| 737 | + // Проверете дали низа _е_ празен, |
| 738 | + // вместо: |
739 | 739 | if ( string === "" ) ...
|
740 | 740 |
|
741 |
| - // ...evaluate falsy-ness, like this: |
| 741 | + // ...проверявайте дали израдът е неверен, по този начин: |
742 | 742 | if ( !string ) ...
|
743 | 743 |
|
744 | 744 |
|
745 | 745 | // 4.1.5
|
746 |
| - // When only evaluating that a reference is true, |
747 |
| - // instead of this: |
| 746 | + // Проверете дали тази референция е вярна, |
| 747 | + // вместо: |
748 | 748 | if ( foo === true ) ...
|
749 | 749 |
|
750 |
| - // ...evaluate like you mean it, take advantage of built in capabilities: |
| 750 | + // ...проверявайте, възползвайки се от вградените възможности: |
751 | 751 | if ( foo ) ...
|
752 | 752 |
|
753 | 753 |
|
754 | 754 | // 4.1.6
|
755 |
| - // When evaluating that a reference is false, |
756 |
| - // instead of this: |
| 755 | + // Проверете дали тази референция е невярна, |
| 756 | + // вместо: |
757 | 757 | if ( foo === false ) ...
|
758 | 758 |
|
759 |
| - // ...use negation to coerce a true evaluation |
| 759 | + // ...проверете, използвайки отрицание |
760 | 760 | if ( !foo ) ...
|
761 | 761 |
|
762 | 762 | // ...Be careful, this will also match: 0, "", null, undefined, NaN
|
|
0 commit comments