Maqheka a 12 a JavaScript ao Lithuto tse ngata li Fetileng

Maqheka a 12 a JavaScript ao Lithuto tse ngata li Fetileng

Ha ke qala ho ithuta JavaScript, ntho ea pele eo ke ileng ka e etsa ke ho etsa lethathamo la maqheka a nthusitseng ho boloka nako. Ke li bone ho tsoa ho baetsi ba mananeo a mang, libakeng tse fapaneng le libukeng tsa libuka.

Sehloohong sena, ke tla u bontša mekhoa e 12 e metle ea ho ntlafatsa le ho potlakisa khoutu ea hau ea JavaScript. Maemong a mangata ke bokahohle.

Re hopotsa: bakeng sa babali bohle ba "Habr" - theolelo ea li-ruble tse 10 ha u ngolisa thupelong efe kapa efe ea Skillbox u sebelisa khoutu ea papatso ea "Habr".

Skillbox e khothaletsa: Tsela e sebetsang "Mobile Developer PRO".

Sefa boleng bo ikhethang

LIEKETSENG

Mofuta oa ntho ea Set o ile oa hlahisoa ho ES6, hammoho le ..., opereishene ea phatlalatso, re ka e sebelisa ho theha lethathamo le lecha le nang le litekanyetso tse ikhethang feela.

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

Boemong bo tloaelehileng, khoutu e ngata e hlokahala ho etsa ts'ebetso e ts'oanang.

Mokhoa ona o sebetsa bakeng sa lihlopha tse nang le mefuta ea khale: e sa hlalosoang, e se nang letho, ea boolean, khoele le nomoro. Haeba u sebetsa ka sehlopha se nang le lintho, mesebetsi, kapa lihlopha tse ling, u tla hloka mokhoa o fapaneng.

Bolelele ba cache array ka lipotoloho

LIEKETSENG

Ha u ithuta ho loops, u latela mokhoa o tloaelehileng:

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

Leha ho le joalo, ka syntax ena, the for loop e lula e lekola bolelele ba lethathamo nako le nako.

Ka linako tse ling sena se ka ba molemo, empa maemong a mangata ho sebetsa hantle haholo ho boloka bolelele ba sehlopha, e leng se tla hloka phihlello e le 'ngoe ho eona. Re ka etsa sena ka ho hlalosa phapang ea bolelele moo re hlalosang phapang i, ka tsela ena:

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

Ha e le hantle, e batla e tšoana le e ka holimo, empa ka ho eketsa boholo ba loop re tla fumana nako ea bohlokoa ea ho boloka nako.

Lintlha tse khutšoane tsa potoloho (Reite ea McCarthy)

LIEKETSENG MEKETSO

ternary operator ke mokhoa o potlakileng le o sebetsang oa ho ngola lipolelo tse nang le maemo tse bonolo ('me ka linako tse ling ha li bonolo hakaalo):

x> 100? “more than 100”: “tlase ho 100”;
x> 100? (x>200? "more than 200": "between 100-200"): "tlase ho 100";

Empa ka linako tse ling esita le opareitara ea ternary e rarahane ho feta kamoo ho hlokahalang. Re ka sebelisa 'le' && le 'kapa' sebakeng sa || Basebelisi ba Boolean ho lekola lipolelo tse itseng ka tsela e khuts'oane le ho feta. Hangata e bitsoa "short circuit" kapa "short circuit rating".

Joang mosebetsing ona

Ha re re re batla ho khutlisa e le 'ngoe feela ea maemo a mabeli kapa ho feta.

Ho sebelisa && ho tla khutlisa boleng ba pele ba bohata. Haeba opereishene ka 'ngoe e lekanya ho 'nete, polelo ea ho qetela e hlahlobiloeng e tla khutlisoa.

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

Ho sebelisa || e tla khutlisa boleng ba pele ba 'nete. Haeba opereishene e 'ngoe le e 'ngoe e sheba ho fosahetse, ho tla khutlisetsoa boleng bo lekantsoeng ba ho qetela.

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

mohlala 1

Ha re re re batla ho khutlisa bolelele ba phetoho, empa ha re tsebe mofuta oa eona.

Tabeng ena, o ka sebelisa haeba/ho seng joalo ho lekola hore foo ke mofuta o nepahetseng, empa mokhoa ona o kanna oa ba telele haholo. Ka hona, ho molemo ho nka "potoloho e khutšoanyane" ea rona.

return (foo || []).length;

Haeba foo e feto-fetohang e na le bolelele bo loketseng, joale e tla khutlisoa. Ho seng joalo re tla fumana 0.

mohlala 2

Na u bile le mathata a ho fihlella ntho e hlahisitsoeng? Mohlomong ha u tsebe hore na ntho kapa e 'ngoe ea likaroloana tsa eona e teng,' me sena se ka baka mathata.

Mohlala, re ne re batla ho fumana thepa ea data sebakeng sena.state, empa data ha e hlalosoe ho fihlela lenaneo la rona le tlisa kopo ea ho lata.

Ho ipapisitse le hore na re e sebelisa hokae, ho letsetsa sena.state.data ho ka thibela sesebelisoa ho qala. Ho rarolla bothata, re ka phuthela sena ka polelo e nang le maemo:

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

Khetho e ntle e ka ba ho sebelisa "kapa" opareitara.

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

Ha re khone ho fetola khoutu e kaholimo ho sebelisa &&. 'Fetching Data' && this.state.data opareta o tla khutlisa this.state.data ho sa tsotellehe hore na e sa hlalosoa kapa che.

Ketane ea boikhethelo

E mong a ka 'na a etsa tlhahiso ea ho sebelisa ketane ea boikhethelo ha a leka ho khutlisetsa thepa ka hare ho mohaho oa sefate. Kahoo, letšoao la letšoao la potso? e ka sebelisoa ho khutlisa thepa ha feela e se lefeela.

Ka mohlala, re ka fetola mohlala o ka holimo ho fumana sena.state.data?..(). Ke hore, data e khutlisoa feela haeba boleng bo se na letho.

Kapa, ​​haeba ho na le taba hore na boemo bo hlalosoa kapa che, re ka khutlisa data ena.

Fetolela ho Boolean

MOFUTA TS'OHO

Ntle le mesebetsi e tloaelehileng ea boolean e le 'nete le leshano, JavaScript e boetse e nka litekanyetso tse ling kaofela e le' nete kapa leshano.

Ho fihlela ho boletsoe ka tsela e 'ngoe, litekanyetso tsohle tsa JavaScript li nepahetse, ntle le 0, "", ha ho letho, ha li hlalosoe, NaN mme, ehlile, ke leshano. Tse latelang ke tsa bohata.

Re ka fetola habonolo lipakeng tsa tse peli re sebelisa ! opareitara, eo hape e fetolelang mofuta ho boolean.

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

Fetolela ho khoele

MOFUTA TS'OHO

Phetoho e potlakileng ho tloha ho palo ho ea ho khoele e ka etsoa ka tsela e latelang.

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

Fetolela ho palo kaofela

MOFUTA TS'OHO

Re etsa phetoho e fapaneng joalo ka ena.

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

Mokhoa ona o ka boela oa sebelisoa ho fetolela mofuta oa data oa boolean ho ba boleng bo tloaelehileng ba linomoro, joalo ka ha ho bonts'itsoe ka tlase:

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

Ho ka 'na ha e-ba le maemo ao ho 'ona + a tla hlalosoa e le opereishene ea concatenation ho e-na le mokhanni oa tlatsetso. Ho qoba sena, o lokela ho sebelisa tildes: ~~. Opereishene ena e lekana le -n-1. Mohlala, ~15 e lekana le -16.

Ho sebelisa li-tilde tse peli ka tatellano ho hana ts'ebetso hobane - (- - n - 1) - 1 = n + 1 - 1 = n. Ka mantsoe a mang, ~-16 e lekana le 15.

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

<Quick Powers

LIEKETSENG

Ho qala ka ES7, o ka sebelisa opareitara ea exponentiation ** joalo ka khutsufatso ea matla. Sena se potlakile ho feta ho sebelisa Math.pow(2, 3). E bonahala e le bonolo, empa ntlha ena e kenyelelitsoe lethathamong la mekhoa, kaha ha e boleloe hohle.

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

Ha ea lokela ho ferekanngoa le letšoao la ^, leo hangata le sebelisoang bakeng sa ho hlalosa. Empa ho JavaScript enoa ke XOR opareitara.

Pele ho ES7, tsela e khuts'oane ea ** e ne e ka sebelisoa feela bakeng sa matla a base 2 ho sebelisoa opareitara ea shift ka ho le letšehali <<:

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

Mohlala, 2 <<3 = 16 e lekana le 2 ** 4 = 16.

Qhoma ho palo kaofela

TS'EBETSO / MOFUTA FETOHA

Ha o hloka ho fetolela float hore e be palo e felletseng, o ka sebelisa Math.floor(), Math.ceil() kapa Math.round(). Empa ho na le tsela e potlakileng, eo re e sebelisang |, ke hore, OR opareitara.

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

Boitšoaro | e itšetlehile haholo ka hore na u sebetsana le linomoro tse ntle kapa tse mpe, kahoo mokhoa ona o loketse feela haeba u kholisehile ho seo u se etsang.

n | 0 e tlosa ntho e 'ngoe le e 'ngoe ka mor'a karohano ea decimal, e fokotsa float ho palo e feletseng.

U ka fumana phello e ts'oanang ea ho potoloha u sebelisa ~~. Ka mor'a phetoho e qobelloang ho palo e feletseng, boleng bo lula bo sa fetohe.

Ho tlosa linomoro tse latelang

OR opareitara e ka sebelisoa ho tlosa palo efe kapa efe ea linomoro palo. Sena se bolela hore ha ho hlokahale hore re fetole mefuta e kang mona:

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

Ho e-na le hoo, re ngola feela:

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

Khokahano e iketsang

LIEKETSENG

Lintlha tsa motsu oa ES6 li ka sebelisoa mekhoeng ea sehlopha, 'me ho tlama hoa boleloa. Sena se bolela hore o ka dumedisa dipolelo tse iphetang jwalo ka ena.myMethod = this.myMethod.tlama(ena)!

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>
      </>
    )
  }
};

Array trimming

LIEKETSENG

Haeba o hloka ho hlobola boleng ho tsoa lethathamong, ho na le mekhoa e potlakileng ho feta splice().

Ka mohlala, haeba u tseba boholo ba sehlopha sa pele, u ka fetisa thepa ea bolelele ba eona ka tsela e latelang:

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

Empa ho na le mokhoa o mong, le o potlakileng. Haeba lebelo ke lona la bohlokoa ho uena, likhetho tsa rona ke tsena:

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]

Ho hatisa boleng ba ho qetela ba sehlopha

LIEKETSENG
Mokhoa ona o hloka tšebeliso ea mokhoa oa selae().

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]

Ho hlophisa khoutu ea JSON

JSON

E ka 'na eaba u se u sebelisitse JSON.stringify. Na u ne u tseba hore e thusa ho fomata JSON ea hau?

Mokhoa oa stringify () o nka mekhahlelo e 'meli ea boikhethelo: mosebetsi o nkelang sebaka, o ka sebelisoang ho sefa JSON e bonts'itsoeng, le boleng ba sebaka.

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

Ke tsohle, ke tšepa hore mekhoa ena kaofela e ne e le molemo. Ke maqheka afe ao u a tsebang? Li ngole litlhalosong.

Skillbox e khothaletsa:

Source: www.habr.com

Eketsa ka tlhaloso