12 JavaScript togafiti e misia e le tele o aʻoaʻoga

12 JavaScript togafiti e misia e le tele o aʻoaʻoga

Ina ua amata ona ou aʻoaʻoina le JavaScript, o le mea muamua na ou faia o le faia lea o se lisi o togafiti na fesoasoani ia te aʻu e sefe ai le taimi. Na ou vaʻaia i latou mai isi tagata fai polokalame, i luga o nofoaga eseese ma tusi lesona.

I lenei tusiga, o le a ou faʻaali atu ia te oe 12 auala sili e faʻaleleia ma faʻavave ai lau code JavaScript. I le tele o tulaga latou te fa'asalalau.

Matou te faʻamanatu atu ia te oe: mo tagata faitau uma o le "Habr" - o se faʻaitiitiga o 10 rubles pe a lesitala i soʻo se vasega Skillbox e faʻaaoga ai le code promotional "Habr".

Ua fautuaina e Skillbox: Kosi fa'ata'ita'i "Mobile Developer PRO".

Filifilia tulaga taua

FA'AIGA

O le Seti mea faitino na faʻafeiloaʻi i le ES6, faʻatasi ai ma le ..., faʻasalalau faʻasalalauga, e mafai ona tatou faʻaogaina e fatu ai se laina fou e aofia ai naʻo tulaga taua.

const array = [1, 1, 2, 3, 5, 5, 1]
const uniqueArray = [...new Set(array)];
 
console.log(uniqueArray); // Result: [1, 2, 3, 5]

I se tulaga masani, e manaʻomia le tele o code e faʻatino ai le gaioiga tutusa.

O lenei metotia e aoga mo faʻasologa o loʻo i ai ituaiga muamua: le faʻamalamalamaina, null, boolean, manoa ma numera. Afai o loʻo e galue ma se faʻasologa o loʻo i ai mea faitino, galuega, poʻo faʻaopoopoga faʻaopoopo, e te manaʻomia se isi auala.

Umi o le fa'asologa o le cache i ta'amilosaga

T'amilosaga

A e aʻoaʻoina mo faʻamaufaʻailoga, e te mulimulitaʻia le faiga masani:

for (let i = 0; i < array.length; i++){
  console.log(i);
}

Ae ui i lea, faatasi ai ma lenei syntax, o le mo le matasele e siaki pea le umi o le laina taʻitasi.

O nisi taimi e mafai ona aoga lenei mea, ae i le tele o tulaga e sili atu ona lelei le teuina o le umi o le laina, lea o le a manaʻomia ai se tasi avanoa i ai. E mafai ona tatou faia lenei mea e ala i le faʻamalamalamaina o se fesuiaiga umi lea tatou te faʻamalamalamaina ai le fesuiaiga i, pei o lenei:

for (let i = 0, length = array.length; i < length; i++){
  console.log(i);
}

I le mataupu faavae, toetoe lava tutusa ma luga, ae o le faateleina o le matasele tele o le a tatou maua se taimi taua sefe.

Fa'ailoga ta'avale pupuu (McCarthy rating)

FA'AVAE FA'AVAE

O le ternary operator o se auala vave ma lelei e tusi ai faʻamatalaga faigofie (ma o nisi taimi e le faigofie tele):

x> 100? “sili atu i le 100”: “itiiti ifo i le 100”;
x> 100? (x>200? "sili atu i le 200": "i le va o le 100-200"): "itiiti ifo i le 100";

Ae o nisi taimi e oʻo lava i le ternary operator e sili atu le lavelave nai lo le manaʻomia. E mafai ona matou faʻaogaina 'ma' && ma 'poʻo' nai lo || Boolean operators e iloilo nisi faʻamatalaga i se auala sili atu ona puʻupuʻu. E masani ona taʻua o le "short circuit" poʻo le "short circuit rating".

E faapefea e lenei galuega

Fa'apea tatou te manana'o e toe fa'afo'i na'o le tasi o le lua pe sili atu tulaga.

O le fa'aaogaina o le && o le a toe fa'afo'i ai le tau fa'asese muamua. Afai e su'esu'e ia operand ta'itasi i le sa'o, ona toe fa'afo'i lea o le fa'amatalaga mulimuli na iloiloina.

let one = 1, two = 2, three = 3;
console.log(one && two && three); // Result: 3
 
console.log(0 && null); // Result: 0

Fa'aaogaina || o le a toe faʻafoʻi le tau moni muamua. Afai e su'esu'e ia operand ta'itasi i le sese, ona toe fa'afo'i lea o le tau su'esu'e mulimuli.

let one = 1, two = 2, three = 3;
console.log(one || two || three); // Result: 1
 
console.log(0 || null); // Result: null

faataitaiga 1

Faapea tatou te mananao e toe faafoi le umi o se fesuiaiga, ae tatou te le iloa lona ituaiga.

I lenei tulaga, e mafai ona e faʻaogaina pe / seisi e siaki ai o le foo o le ituaiga saʻo, ae o lenei metotia atonu e umi tele. O le mea lea, e sili atu le ave o la tatou "vaʻa puʻupuʻu".

return (foo || []).length;

Afai e talafeagai le umi o le foo fesuia'i, ona toe faafoi mai lea. A leai o le a tatou maua le 0.

faataitaiga 2

Na iai ni fa'afitauli i lou mauaina o se mea fa'amoega? Atonu e te le iloa pe iai se mea po'o se tasi o ona vaega laiti, ma e mafai ona o'o atu ai i fa'afitauli.

Mo se fa'ata'ita'iga, matou te manana'o e fa'aoga le meatotino fa'amaumauga i lenei.state, ae e le'i fa'amalamalamaina fa'amaumauga se'i vagana ua toe fa'afo'i mai e le matou polokalame se talosaga fetch.

Fa'alagolago i le mea tatou te fa'aogaina ai, vala'au this.state.data e ono taofia ai le talosaga mai le amataina. Ina ia foia le faʻafitauli, e mafai ona matou afifiina i se faʻamatalaga faʻapitoa:

if (this.state.data) {
  return this.state.data;
} else {
  return 'Fetching Data';
}

O se filifiliga sili atu o le faʻaaogaina lea o le "poʻo" faʻaoga.

return (this.state.data || 'Fetching Data');

E le mafai ona matou suia le code i luga e faʻaaoga ai &&. Ole 'Fetching Data' && this.state.data operator o le a toe fa'afo'i le this.state.data tusa lava pe le'o fa'amalamalamaina pe leai.

filifili filifili

Atonu e fautuaina e se tasi le fa'aogaina o filifili filifili pe a taumafai e toe fa'afo'i se fanua i totonu o se fausaga o la'au. O lea la, o le faailoga fesili? e mafai ona fa'aaoga e toe aumai ai se meatotino pe afai e le null.

Mo se faʻataʻitaʻiga, e mafai ona matou toe faʻaleleia le faʻataʻitaʻiga o loʻo i luga e maua ai lenei.state.data?..(). O lona uiga, e toe fa'afo'i fa'amaumauga pe a le fa'aleaogaina le tau.

Pe, afai e taua pe faʻamatalaina le setete pe leai, e mafai ona matou toe faʻafoʻi atu lenei.state?.data.

Su'e ile Boolean

LILIU IUGA

I le faaopoopo atu i galuega masani a le boolean e moni ma sese, o le JavaScript foi e togafitia isi tulaga taua uma e moni pe sese.

Se'i vagana ua maitauina, o mea taua uma i le JavaScript e moni, sei vagana ai le 0, "", null, undefined, NaN ma, ioe, sese. O mea mulimuli e pepelo.

E faigofie ona tatou fesuiai i le va o le lua e faʻaaoga ai le ! operator, lea e faʻaliliuina ai foi le ituaiga i le boolean.

const isTrue  = !0;
const isFalse = !1;
const alsoFalse = !!0;
 
console.log(true); // Result: true
console.log(typeof true); // Result: "boolean"

Su'e ile manoa

LILIU IUGA

O se suiga vave mai se numera atoa i se manoa e mafai ona faia e pei ona taua i lalo.

const val = 1 + "";
 
console.log(val); // Result: "1"
console.log(typeof val); // Result: "string"

Su'e i le numera atoa

LILIU IUGA

Matou te faia le suiga faʻasolosolo e pei o lenei.

let int = "15";
int = +int;
 
console.log(int); // Result: 15
console.log(typeof int); Result: "number"

E mafai fo'i ona fa'aoga lenei metotia e fa'aliliu ai le ituaiga fa'amaumauga o le boolean i fa'amaumauga masani, e pei ona fa'aalia i lalo:

console.log(+true);  // Return: 1
console.log(+false); // Return: 0

Atonu ei ai tulaga e fa'aliliuina ai le + o se fa'aoga fa'aopoopo nai lo se fa'aopoopo fa'aopoopo. Ina ia aloese mai lenei mea, e tatau ona e faʻaogaina tildes: ~~. O lenei fa'agaioiga e tutusa ma le -n-1. Mo se faʻataʻitaʻiga, ~ 15 e tutusa ma -16.

O le fa'aaogaina o tildes se lua i se laina e fa'afitia ai le gaioiga ona - (- - n - 1) - 1 = n + 1 - 1 = n. I se isi faaupuga, ~-16 e tutusa ma le 15.

const int = ~~"15"
console.log(int); // Result: 15
console.log(typeof int); Result: "number"

<Malosi Vave

GALUEGA

Amata i le ES7, e mafai ona e faʻaogaina le faʻasalalauga faʻapitoa ** e fai ma faʻapuupuu mo malosiaga. E sili atu le vave nai lo le faʻaaogaina o le Math.pow(2, 3). E foliga mai e faigofie, ae o lenei vaega o loʻo aofia i le lisi o metotia, talu ai e le o taʻua i soo se mea.

console.log(2 ** 3); // Result: 8

E le tatau ona fenumiai ma le ^ faailoga, lea e masani ona faʻaaogaina mo le faʻateleina. Ae i le JavaScript o le XOR operator lea.

Aʻo leʻi oʻo i le ES7, o le ** ala 'alo e mafai ona faʻaaogaina mo malosiaga o le faʻavae 2 faʻaaoga le bitwise left shift operator <<:

Math.pow(2, n);
2 << (n - 1);
2**n;

Mo se faʻataʻitaʻiga, 2 << 3 = 16 e tutusa ma le 2 ** 4 = 16.

Fa'afefe i le numera atoa

GALUEGA / ITIGA LILIUINA

Afai e te manaʻomia le faʻaliliuina o se faʻafefe i se numera, e mafai ona e faʻaogaina Math.floor(), Math.ceil() poʻo Math.round(). Ae o loʻo i ai se auala vave, mo lenei matou te faʻaaogaina |, o lona uiga, le OR operator.

console.log(23.9 | 0);  // Result: 23
console.log(-23.9 | 0); // Result: -23

Amioga | fa'alagolago tele pe o lo'o e feagai ma numera lelei pe leaga, o lea e fetaui lelei lenei metotia pe'āfai e te mautinoa i mea o lo'o e faia.

n | 0 aveese mea uma pe a mae'a le vaeluaga o le tesi, tipi le fa'anofoa i se numera.

E mafai ona e maua le a'afiaga fa'ata'amilosaga tutusa e fa'aaoga ai ~~. A mae'a fa'amalosia le liua i se numera, e tumau le tau e le suia.

Aveese numera mulimuli

O le OR operator e mafai ona fa'aoga e aveese so'o se numera o numera mai se numera. O lona uiga tatou te le mana'omia le faaliliuina o ituaiga e pei o iinei:

let str = "1553";
Number(str.substring(0, str.length - 1));

Nai lo lena, matou te tusia:

console.log(1553 / 10   | 0)  // Result: 155
console.log(1553 / 100  | 0)  // Result: 15
console.log(1553 / 1000 | 0)  // Result: 1

So'oga otometi

Vasega

E mafai ona fa'aogaina fa'amatalaga arrow ES6 i metotia a le vasega, ma o lo'o fa'atusalia le fusifusia. O lona uiga e mafai ona e fa'atofa atu i fa'amatalaga toe fai fa'apei.myMethod = this.myMethod.bind(this)!

import React, { Component } from React;
 
export default class App extends Compononent {
  constructor(props) {
  super(props);
  this.state = {};
  }
 
myMethod = () => {
    // This method is bound implicitly!
  }
 
render() {
    return (
      <>
        <div>
          {this.myMethod()}
        </div>
      </>
    )
  }
};

Teuga o fa'asologa

FA'AIGA

Afai e te manaʻo e aveese faʻatauga mai se laina, o loʻo i ai auala sili atu nai lo splice().

Mo se faʻataʻitaʻiga, afai e te iloa le tele o le faʻasologa muamua, e mafai ona e faʻamalo lona umi meatotino e pei ona taua i lalo:

let array = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9];
array.length = 4;
 
console.log(array); // Result: [0, 1, 2, 3]

Ae o loʻo i ai se isi auala, ma e sili atu le vave. Afai o le saoasaoa e taua ia te oe, o la matou filifiliga nei:

let array = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9];
array = array.slice(0, 4);
 
console.log(array); // Result: [0, 1, 2, 3]

Lolomiina le aoga mulimuli (s) o se array

FA'AIGA
O lenei metotia e manaʻomia ai le faʻaogaina o le fasi () metotia.

let array = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9];
 
console.log(array.slice(-1)); // Result: [9]
console.log(array.slice(-2)); // Result: [8, 9]
console.log(array.slice(-3)); // Result: [7, 8, 9]

Fa'asologa o le JSON code

JSON

Atonu ua uma ona e faaaogaina JSON.stringify. Na e iloa e fesoasoani i le faʻatulagaina o lau JSON?

Ole auala stringify() e lua ni fa'ailoga e filifili ai: o se galuega sui, lea e mafai ona fa'aoga e faamama ai le JSON fa'aalia, ma se tau avanoa.

console.log(JSON.stringify({ alpha: 'A', beta: 'B' }, null, 't'));
 
// Result:
// '{
//     "alpha": A,
//     "beta": B
// }'

Pau lava lena, ou te faʻamoemoe sa aoga uma nei metotia. O a togafiti e te iloa? Tusi i latou i faʻamatalaga.

Ua fautuaina e Skillbox:

puna: www.habr.com

Faaopoopo i ai se faamatalaga