Dabaru 12 na JavaScript Waɗanda Mafi yawan Koyarwa ke rasa
Lokacin da na fara koyon JavaScript, abu na farko da na yi shi ne yin jerin dabaru waɗanda suka taimaka mini in adana lokaci. Na hange su daga wasu masu tsara shirye-shirye, a kan shafuka daban-daban da kuma a cikin litattafai.
A cikin wannan labarin, zan nuna muku manyan hanyoyi 12 don haɓakawa da haɓaka lambar JavaScript ɗinku. A mafi yawan lokuta suna duniya.
Muna tunatarwa:ga duk masu karatu na "Habr" - rangwame na 10 rubles lokacin yin rajista a kowane kwas na Skillbox ta amfani da lambar talla "Habr".
An gabatar da nau'in abu na Saitin a cikin ES6, tare da..., mai watsawa, za mu iya amfani da shi don ƙirƙirar sabon tsari wanda ya ƙunshi ƙima na musamman kawai.
A cikin yanayi na al'ada, ana buƙatar ƙarin lamba don yin aiki iri ɗaya.
Wannan dabara tana aiki don tsararru masu ƙunshe da nau'ikan na asali: waɗanda ba a bayyana su ba, mara amfani, boolean, kirtani da lamba. Idan kana aiki tare da tsararru mai ɗauke da abubuwa, ayyuka, ko ƙarin jeri, za ku buƙaci wata hanya dabam.
Tsawon tsararrun cache a cikin zagayawa
ZAGAYA
Lokacin da kuka koyi madaukai, kuna bin daidaitaccen hanya:
for (let i = 0; i < array.length; i++){
console.log(i);
}
Koyaya, tare da wannan haɗin gwiwa, don madauki akai-akai yana bincika tsawon tsararrun kowane juzu'i.
Wani lokaci wannan yana iya zama da amfani, amma a mafi yawan lokuta ya fi dacewa don cache tsawon tsararrun, wanda zai buƙaci samun damar shiga. Za mu iya yin haka ta hanyar ayyana ma'anar ma'anar ma'ana mai tsayi inda muka ayyana variable i, kamar haka:
for (let i = 0, length = array.length; i < length; i++){
console.log(i);
}
A ka'ida, kusan iri ɗaya kamar na sama, amma ta hanyar haɓaka girman madauki za mu sami tanadin lokaci mai mahimmanci.
Ƙididdiga gajere (ƙimar McCarthy)
MASU AIKATA SHARADI
Mai aiki na ternary hanya ce mai sauri da inganci don rubuta kalmomi masu sauƙi (kuma wasu lokuta ba masu sauƙi ba)
x> 100? "fiye da 100": "kasa da 100";
x> 100? (x>200? "fiye da 200": "tsakanin 100-200"): "kasa da 100";
Amma wani lokacin ma ma'aikacin ternary ya fi rikitarwa fiye da yadda ake buƙata. Za mu iya amfani da 'and' && da 'ko' maimakon || Ma'aikatan Boolean don tantance wasu maganganu ta madaidaicin hanya. Sau da yawa ana kiransa "short circuit" ko "gajeren ƙima".
Ta yaya wannan aikin
Bari mu ce muna so mu dawo da ɗaya daga cikin sharuɗɗa biyu ko fiye.
Amfani && zai dawo da ƙimar ƙarya ta farko. Idan kowane operand ya kimanta zuwa gaskiya, to za a mayar da magana ta ƙarshe da aka tantance.
let one = 1, two = 2, three = 3;
console.log(one && two && three); // Result: 3
console.log(0 && null); // Result: 0
Amfani || zai dawo da ƙimar gaskiya ta farko. Idan kowane operand ya kimanta zuwa ƙarya, to za a mayar da ƙimar da aka kimanta ta ƙarshe.
let one = 1, two = 2, three = 3;
console.log(one || two || three); // Result: 1
console.log(0 || null); // Result: null
misali 1
Bari mu ce muna so mu mayar da tsawon ma'auni, amma ba mu san nau'insa ba.
A wannan yanayin, zaku iya amfani da idan / wani don bincika cewa foo shine nau'in da ya dace, amma wannan hanyar na iya yin tsayi da yawa. Saboda haka, yana da kyau mu ɗauki "gajeren kewaye".
return (foo || []).length;
Idan foo mai canzawa yana da tsayin da ya dace, to za a dawo da shi. In ba haka ba za mu sami 0.
misali 2
Shin kun sami matsalolin samun shiga wani abu gida? Wataƙila ba za ku san ko akwai wani abu ko ɗaya daga cikin dukiyarsa ba, kuma hakan na iya haifar da matsala.
Misali, muna son samun damar mallakar bayanan a cikin wannan.state, amma ba a fayyace bayanai ba har sai shirinmu ya dawo da buƙatu.
Dangane da inda muke amfani da shi, kiran wannan.state.data na iya hana aikace-aikacen farawa. Don magance matsalar, za mu iya kunsa wannan a cikin wani yanayi mai ma'ana:
Ba za mu iya canza lambar da ke sama don amfani da &&. The 'Fetching Data' && this.state.data afaretan zai mayar da wannan.state.data ba tare da la'akari da ko ba a bayyana ko a'a.
Sarkar zaɓi
Mutum na iya ba da shawarar yin amfani da sarƙa na zaɓi lokacin ƙoƙarin mayar da dukiya mai zurfi cikin tsarin itace. Don haka, alamar tambaya? za a iya amfani da shi don dawo da dukiya kawai idan ba ta lalace ba.
Misali, zamu iya sake fasalin misalin da ke sama don samun wannan.state.data?...(). Wato ana mayar da bayanai ne kawai idan darajar ba ta lalace ba.
Ko, idan yana da mahimmanci ko an ayyana jihar ko a'a, zamu iya dawo da wannan.state?.data.
Canza zuwa Boolean
NAU'I SAUKI
Baya ga ayyukan boolean na yau da kullun na gaskiya da na ƙarya, JavaScript kuma yana ɗaukar duk wasu dabi'u a matsayin gaskiya ko ƙarya.
Har sai an lura da in ba haka ba, duk dabi'u a cikin JavaScript gaskiya ne, sai dai 0, "", null, undefined, NaN kuma, ba shakka, ƙarya. Na karshen karya ne.
Za mu iya sauƙi canzawa tsakanin su biyu ta amfani da afaretan !, wanda kuma ke canza nau'in zuwa boolean.
Akwai yuwuwar samun yanayi inda + za a fassara shi azaman ma'aikacin haɗin gwiwa maimakon ma'aikacin ƙari. Don kauce wa wannan, yi amfani da tildes: ~~. Wannan ma'aikaci yayi daidai da -n-1. Misali, ~ 15 daidai yake da -16.
Yin amfani da tildu biyu a jere yana hana aikin saboda - (- - n - 1) - 1 = n + 1 - 1 = n. A wasu kalmomi, ~-16 daidai yake da 15.
Farawa daga ES7, zaku iya amfani da afaretan fassarar ** azaman gajeriyar hannu don iko. Wannan yana da sauri fiye da amfani da Math.pow(2, 3). Yana da alama mai sauƙi, amma wannan batu yana cikin jerin hanyoyin fasaha, tun da ba a ambaci shi a ko'ina ba.
console.log(2 ** 3); // Result: 8
Bai kamata a rikita shi da alamar ^ ba, wadda aka saba amfani da ita don fassarawa. Amma a cikin JavaScript wannan shine ma'aikacin XOR.
Kafin ES7, za a iya amfani da gajeriyar hanyar ** kawai don ikon tushe 2 ta amfani da ma'aikacin motsi na hagu na bitwise <<:
Math.pow(2, n);
2 << (n - 1);
2**n;
Misali, 2 << 3 = 16 daidai yake da 2 ** 4 = 16.
Taso kan ruwa zuwa lamba
AIKI / KYAUTA NAU'I
Idan kana buƙatar canza mai iyo zuwa lamba, zaka iya amfani da Math.floor(), Math.ceil() ko Math.round(). Amma akwai hanya mafi sauri, don wannan muna amfani da |, wato, OR ma'aikacin.
Hali | ya dogara da yawa akan ko kuna hulɗa da lambobi masu kyau ko marasa kyau, don haka wannan hanyar ta dace kawai idan kun kasance da kwarin gwiwa akan abin da kuke yi.
n | 0 yana cire duk abin da ke bayan mai raba goma, yana yanke ta iyo zuwa lamba.
Kuna iya samun tasirin zagaye iri ɗaya ta amfani da ~~. Bayan jujjuya tilas zuwa lamba, ƙimar ba ta canzawa.
Cire lambobi masu biyo baya
Ana iya amfani da afaretan OR don cire kowane adadin lambobi daga lamba. Wannan yana nufin ba ma buƙatar mu canza nau'ikan kamar anan:
let str = "1553";
Number(str.substring(0, str.length - 1));
Ana iya amfani da alamun kibiya na ES6 a hanyoyin aji, kuma ana nuna ɗauri. Wannan yana nufin za ku iya yin bankwana da maimaita maganganu kamar haka.myMethod = wannan.myMethod.bind(wannan)!