Kivinza cha juu cha JavaScript

请避免全局变量、new===eval()

避免全局变量

请尽量少地使用全局变量。

它包括所有的数据类型、对象和函数。

全局变量和函数可被其他脚本覆盖。

请使用局部变量替代,并学习如何使用闭包.

始终声明局部变量

所有在函数中使用的变量应该被声明为局部变量。

局部变量必须通过 var 关键词来声明,否则它们将变成全局变量。

严格模式不允许未声明的变量。

inasajiliwa kwenye juu

Habari ya kusoma bora inaonekana kusajiliwa kila maonyesho kwenye juu ya kila scripti au fungu

Faidi ya hii ni:

  • inaendelea kufikia kwa kumekadiri programu
  • inajifunza kufikia nafasi ya kila mwingiliano
  • inaendelea kuwahifadhi maonyesho jumuuija yanaonesha kusikitisha
  • kumichoka ujaribio wa kurekodia maonyesho ya kila mara
// inasajiliwa kwenye juu
var firstName, lastName, price, discount, fullPrice;
// baada ya kutumika
firstName = "Bill";
lastName = "Gates";
price = 19.90;
discount = 0.10;
fullPrice = price * 100 / discount;

inaweza kutumiwa kama jina la jumuija:

// inasajiliwa kwenye juu
var i;
// baada ya kutumika
for (i = 0; i < 5; i++)  {

Chakula, JavaScript inasifia kufikia kila maonyesho kwa kuelekea juu (JavaScript hoisting).

kuanzai zhangli

Kufungua kina chaguo kina wakati ukiandika kina ni habari gani.

Faidi ya hii ni:

  • Kina kina kina kinachotumika kina
  • Kufungua kina kina kwa eneo lake pekee
  • Kutumia thamani ya huzuni
// Inafikia kuanzia kufungua na kufungua kina
var firstName = "",
    lastName  = "",
    price = 0,
    discount = 0,
    fullPrice  = 0,
    myArray = [],
    myObject = {};

Kufungua kina chaguo kina tunaweza kuelewa matumizi ya muhimu na aina ya data ya muhimu.

Hujisikia kufungua thamani, maandiko au ukweli kama kina

Wakati wote tukieleze kwamba thamani, maandiko au ukweli ni thamani ya kina, na si kina.

Kama hizi aina za maelezo zilikuwa kina, zizatengeneza ukweli wa kina kwa kina, na zizatoa matatizo ya kina:

Mifano

var x = "Bill";             
var y = new String("Bill");
(x === y) // Matokeo ni false, kwa sababu x ni maandiko, na y ni kina.

Tukutenda kwa mafanikio

au bila kina:

Mifano

var x = new String("Bill");             
var y = new String("Bill");
(x == y) // Matokeo ni false, kwa sababu huna mpangilio wa kina wa kina.

Tukutenda kwa mafanikio

Hujisikia new Object()

  • Tumia {} kuhusu new Object()
  • Tumia "" kuhusu new String()
  • Tumia 0 kuhusu new Number()
  • Tumia false kuhusu new Boolean()
  • Tumia [] kuhusu new Array()
  • Tumia /()/ kuhusu new RegExp()
  • Tumia function (){} kuhusu new Function()

Mifano

var x1 = {};           // Mwongozo mpya wa kina
var x2 = "";           // Mavara mpya ya maandiko ya kina
var x3 = 0;            // Mavara mpya ya thamani ya kina
var x4 = false;        // Mavara mpya ya ukweli wa kina
var x5 = [];           // Mwongozo mpya wa kipakaa
var x6 = /()/;         // Mwongozo mpya wa kirekana kwa uharibifu
var x7 = function(){}; // Mwongozo mpya wa kifaa cha programu

Tukutenda kwa mafanikio

Kuelewa kuhusiana na uharibifu wa aina ya data

Tukieleza kwamba thamani zinaendelea kuwa kama maandiko au NaN(Hakuna Namba).

JavaScript inayopata kipata kina. Mavara inayoweza kuwa na aina ya data mbalimbali, na mavara inaweza kubadilika aina yake ya data:

Mifano

var x = "Hello";     // typeof x ni string
x = 5;               // Badilisha typeof x kuwa namba

Tukutenda kwa mafanikio

Kama ni kwa kugawaza mafunzo, JavaScript inaweza kubadilisha thamani za namba kuwa string:

Mifano

var x = 5 + 7;       // x.valueOf() ni 12, typeof x ni namba
var x = 5 + "7";     // x.valueOf() ni 57, typeof x ni string
var x = "5" + 7;     // x.valueOf() ni 57, typeof x ni string
var x = 5 - 7;       // x.valueOf() ni -2, typeof x ni namba
var x = 5 - "7";     // x.valueOf() ni -2, typeof x ni namba
var x = "5" - 7;     // x.valueOf() ni -2, typeof x ni namba
var x = 5 - "x";     // x.valueOf() ni NaN, typeof x ni namba

Tukutenda kwa mafanikio

Kugawaza string kwa string haikupoteza kosa wala kuwa na thamani: NaN(Hakuna Namba):

Mifano

"Hello" - "Dolly"    // Inaruhusu NaN

Tukutenda kwa mafanikio

Tumia === kwa kugawaza

== taarifu za kugawaza zinaenda kufanyia ujumbe wa aina kabla ya kugawaza (kwa sababu ya uenezi wa aina).

=== taarifu za kugawaza inakufaa kugawaza thamani na aina:

Mifano

0 == "";        // true
1 == "1";       // true
1 == true;      // true
0 === "";       // false
1 === "1";      // false
1 === true;     // false

Tukutenda kwa mafanikio

kwa thamani za kawaida

inafichukia kama hujafichukia parameter kama ni kwa kufanya kikao cha programu, thamani ya parameter ya kifichukia hiyo itakapopaswa kwa thamani undefined.

undefined inafichukia izingatizo zaidi kwa programu. Kuweka thamani za kawaida kwa thamani zote ni tabia nzuri.

Mifano

function myFunction(x, y) {
    inafichukia (y === undefined) {
        y = 0;
    }
}

Tukutenda kwa mafanikio

Inafaa kusomaKiparamiteri cha kifunguoInafaa kusoma mawasiliano ya maelezo ya kifunguo cha kiparamiteri.

Tumia default kumaliza switch

Tumia default kutoka kwa kumaliza switch Inayotumiwa kama inahitajika, na inaweza kumekadiri.

Mifano

switch (new Date().getDay()) {
    case 0:
        day = "Sunday";
        kufungua;
    case 1:
        day = "Monday";
         kufungua;
    case 2:
        day = "Tuesday";
         kufungua;
    case 3:
        day = "Wednesday";
         kufungua;
    case 4:
        day = "Thursday";
         kufungua;
    case 5:
        day = "Friday";
         kufungua;
    case 6:
        day = "Saturday";
         kufungua;
    default:
        day = "Unknown";
} 

Tukutenda kwa mafanikio

Usiwasaidia eval()

eval() Mfano inatumiwa kusaidia kusafiri matukio kama kosa. Kwa kawaida, hii inahitajika.

Kwa sababu inaruhusiwa kusafiri kwa kosa yoyote, hii pia inamaanisha masuala ya ukumbi.