|
1005 | 1005 |
|
1006 | 1006 | }.bind(this) );
|
1007 | 1007 |
|
1008 |
| - // Throttle the frequency of events emitted from |
1009 |
| - // this Device instance |
1010 | 1008 | // Ограничете честотата на събитията изпратени от
|
1011 | 1009 | // инстанцията на Device
|
1012 | 1010 | setInterval(function() {
|
|
1140 | 1138 |
|
1141 | 1139 | `thisArg` може да се използва `Array.prototype.every`, `Array.prototype.forEach`, `Array.prototype.some`, `Array.prototype.map`, `Array.prototype.filter`
|
1142 | 1140 |
|
1143 |
| -7. <a name="misc">Misc</a> |
| 1141 | +7. <a name="misc">Разни</a> |
1144 | 1142 |
|
1145 |
| - This section will serve to illustrate ideas and concepts that should not be considered dogma, but instead exists to encourage questioning practices in an attempt to find better ways to do common JavaScript programming tasks. |
| 1143 | + Този раздел ще служи за илюстриране на идеи и концепции, които не трябва да се считат за догма, вместо това съществува за да даде под съмнение практиките в опит да се намери по-добри начини за изпълнение, често срещани JavaScript задачи. |
1146 | 1144 |
|
1147 |
| - A. Using `switch` should be avoided, modern method tracing will blacklist functions with switch statements |
| 1145 | + A. Използването на `switch` трябва да се избягва, тъй като съвременния метод за отстраняване на грешки ще скрие повикванията на функции, които го използват. |
1148 | 1146 |
|
1149 |
| - There seems to be drastic improvements to the execution of `switch` statements in latest releases of Firefox and Chrome. |
| 1147 | + Изглежда че последните версии на браузърите Firefox и Chrome имат значителни подобрения в работата на функциите, които използват `switch`. |
1150 | 1148 | http://jsperf.com/switch-vs-object-literal-vs-module
|
1151 | 1149 |
|
1152 |
| - Notable improvements can be witnessed here as well: |
| 1150 | + Забележими подобрения могат да се забележат също и тук: |
1153 | 1151 | https://github.com/rwldrn/idiomatic.js/issues/13
|
1154 | 1152 |
|
1155 | 1153 | ```javascript
|
1156 | 1154 |
|
1157 | 1155 | // 7.A.1.1
|
1158 |
| - // An example switch statement |
| 1156 | + // Пример на оператора switch |
1159 | 1157 |
|
1160 | 1158 | switch( foo ) {
|
1161 | 1159 | case "alpha":
|
|
1165 | 1163 | beta();
|
1166 | 1164 | break;
|
1167 | 1165 | default:
|
1168 |
| - // something to default to |
| 1166 | + // код по подразбиране |
1169 | 1167 | break;
|
1170 | 1168 | }
|
1171 | 1169 |
|
1172 | 1170 | // 7.A.1.2
|
1173 |
| - // A alternate approach that supports composability and reusability is to |
1174 |
| - // use an object to store "cases" and a function to delegate: |
1175 | 1171 |
|
| 1172 | + // Алтернативен подход, който подкрепя използваемостта и повторната употреба е да |
| 1173 | + // се използва обект за съхранение на "случаи" и функция за делегация |
1176 | 1174 | var cases, delegator;
|
1177 | 1175 |
|
1178 |
| - // Example returns for illustration only. |
| 1176 | + // Примерът връща само с илюстративни цели. |
1179 | 1177 | cases = {
|
1180 | 1178 | alpha: function() {
|
1181 |
| - // statements |
1182 |
| - // a return |
| 1179 | + // изрази |
| 1180 | + // връщане |
1183 | 1181 | return [ "Alpha", arguments.length ];
|
1184 | 1182 | },
|
1185 | 1183 | beta: function() {
|
1186 |
| - // statements |
1187 |
| - // a return |
| 1184 | + // изрази |
| 1185 | + // връщане |
1188 | 1186 | return [ "Beta", arguments.length ];
|
1189 | 1187 | },
|
1190 | 1188 | _default: function() {
|
1191 |
| - // statements |
1192 |
| - // a return |
| 1189 | + // изрази |
| 1190 | + // връщане |
1193 | 1191 | return [ "Default", arguments.length ];
|
1194 | 1192 | }
|
1195 | 1193 | };
|
1196 | 1194 |
|
1197 | 1195 | delegator = function() {
|
1198 | 1196 | var args, key, delegate;
|
1199 | 1197 |
|
1200 |
| - // Transform arguments list into an array |
| 1198 | + // Трансформиране на списъка с аргументите в масив |
1201 | 1199 | args = [].slice.call( arguments );
|
1202 | 1200 |
|
1203 |
| - // shift the case key from the arguments |
| 1201 | + // Променяне на ключа на случая от аргументите |
1204 | 1202 | key = args.shift();
|
1205 | 1203 |
|
1206 |
| - // Assign the default case handler |
| 1204 | + // Определяне на ключа по подразбиране |
1207 | 1205 | delegate = cases._default;
|
1208 | 1206 |
|
1209 |
| - // Derive the method to delegate operation to |
| 1207 | + // Извличане на метода за да делегиране на операция |
1210 | 1208 | if ( cases.hasOwnProperty( key ) ) {
|
1211 | 1209 | delegate = cases[ key ];
|
1212 | 1210 | }
|
1213 | 1211 |
|
1214 |
| - // The scope arg could be set to something specific, |
1215 |
| - // in this case, |null| will suffice |
| 1212 | + // Обхватния аргумент може да бъде зададен към нещо специфични, |
| 1213 | + // в този случай, |null| ще бъде достатъчно |
1216 | 1214 | return delegate.apply( null, args );
|
1217 | 1215 | };
|
1218 | 1216 |
|
1219 | 1217 | // 7.A.1.3
|
1220 |
| - // Put the API in 7.A.1.2 to work: |
1221 |
| -
|
| 1218 | + // Сложете Апито в 7.A.1.2 да работи: |
1222 | 1219 | delegator( "alpha", 1, 2, 3, 4, 5 );
|
1223 | 1220 | // [ "Alpha", 5 ]
|
1224 | 1221 |
|
1225 |
| - // Of course, the `case` key argument could easily be based |
1226 |
| - // on some other arbitrary condition. |
1227 |
| -
|
| 1222 | + // Разбира се, ключовият аргумент на `случая` може да се основава лесно |
| 1223 | + // при някакво друго произволно условие. |
| 1224 | + |
1228 | 1225 | var caseKey, someUserInput;
|
1229 | 1226 |
|
1230 |
| - // Possibly some kind of form input? |
| 1227 | + // Вероятно някакво поле на форма? |
1231 | 1228 | someUserInput = 9;
|
1232 | 1229 |
|
1233 | 1230 | if ( someUserInput > 10 ) {
|
|
1236 | 1233 | caseKey = "beta";
|
1237 | 1234 | }
|
1238 | 1235 |
|
1239 |
| - // or... |
| 1236 | + // или... |
1240 | 1237 |
|
1241 | 1238 | caseKey = someUserInput > 10 ? "alpha" : "beta";
|
1242 | 1239 |
|
1243 |
| - // And then... |
| 1240 | + // И тогава... |
1244 | 1241 |
|
1245 | 1242 | delegator( caseKey, someUserInput );
|
1246 | 1243 | // [ "Beta", 1 ]
|
1247 | 1244 |
|
1248 |
| - // And of course... |
| 1245 | + // И разбира се... |
1249 | 1246 |
|
1250 | 1247 | delegator();
|
1251 | 1248 | // [ "Default", 0 ]
|
1252 | 1249 |
|
1253 | 1250 |
|
1254 | 1251 | ```
|
1255 | 1252 |
|
1256 |
| - B. Early returns promote code readability with negligible performance difference |
| 1253 | + B. Ранните връщания подобряват четимостта на кода с незначителна разлика в производителността |
1257 | 1254 |
|
1258 | 1255 | ```javascript
|
1259 | 1256 |
|
1260 | 1257 | // 7.B.1.1
|
1261 |
| - // Bad: |
| 1258 | + // Лош пример: |
1262 | 1259 | function returnLate( foo ) {
|
1263 | 1260 | var ret;
|
1264 | 1261 |
|
|
1270 | 1267 | return ret;
|
1271 | 1268 | }
|
1272 | 1269 |
|
1273 |
| - // Good: |
| 1270 | + // Добър пример: |
1274 | 1271 |
|
1275 | 1272 | function returnEarly( foo ) {
|
1276 | 1273 |
|
|
0 commit comments