แฟนซีสำหรับลูป
คุณสามารถใช้มาตรฐานสำหรับวงในวิธีที่ไม่ได้มาตรฐาน
for ( a; b; c )
โดยพื้นฐานแล้วเทียบเท่ากับ:
a;
while ( b )
{
...
c;
}
ดังนั้นเคล็ดลับที่ดีคือการเขียนโค้ดของคุณด้วยการwhile
วนซ้ำแล้วแยกมันออกเป็นa,b,c
ส่วนต่าง ๆ ในการfor
วนซ้ำ
ตัวอย่างที่ฉันเขียน :
for(x=y=n;!z;x--,y++)z=i(x)?x:i(y)?y:0
for(a=b=1;b<n;c=a+b,a=b,b=c);
เชนหมาของคุณ
หากคุณกำลังเริ่มต้นหรือรีเซ็ตค่าหลายค่าเชื่อมโยงค่ากับตัวแปรทั้งหมดที่ต้องการ:
a=b=1;
การหล่อโดยนัย
อย่าตรวจสอบประเภทของคุณเพียงใช้มันอย่างที่เป็น ตัวละครparseInt()
ค่าใช้จ่าย 10
หากคุณจำเป็นต้องใช้สตริงให้สร้างสรรค์:
a='30';
b='10';
c = a + b; //failure
c = parseInt(a) + parseInt(b) //too long
c = -(-a-b); //try these
c = ~~a+~~b;
c = +a+ +b;
c = a- -b;
หลีกเลี่ยงอัฒภาค
JavaScript มีการแทรกเครื่องหมายโคลอนอัตโนมัติ ใช้บ่อยและดี
หนึ่งสมุทร
บันทึกในวงเล็บด้วยการเลื่อนให้มากที่สุดเท่าที่ทำได้ในบรรทัดเดียวหรือพารามิเตอร์:
a( realParam1, realParam2, fizz='buzz' )
ผู้ประกอบการเพิ่ม / ลดลง
a = a - 1;
foo(a);
และ
foo(a);
a = a - 1;
สามารถเขียนใหม่ได้อย่างง่ายดายเช่น
foo(--a);
และ
foo(a--);
ตามลำดับ
ใช้this
หรือself
แทนwindow
บริบททั่วโลก
อธิบายการประหยัดตัวละครด้วยตนเอง 2 ครั้ง
ใช้เครื่องหมายวงเล็บสำหรับการเข้าถึงคุณสมบัติซ้ำ
นี่เป็นการกระทำที่สมดุลระหว่างความยาวชื่อคุณสมบัติและจำนวนการเข้าถึง แทนที่จะบันทึกa.longFunctionName()
ด้วยเครื่องหมายจุดสองครั้งจะสั้นกว่าในการบันทึกชื่อและเรียกใช้ฟังก์ชันผ่านเครื่องหมายวงเล็บ:
a.longFunctionName(b)
a.longFunctionName(c)
//42
-vs-
a[f='longFunctionName'](b)
a[f](c)
//34
สิ่งนี้มีประสิทธิภาพเป็นพิเศษด้วยฟังก์ชั่นdocument.getElementById
ที่สามารถลดd[e]
ขนาด
บันทึก:
ด้วยเครื่องหมายวงเล็บค่าใช้จ่ายจะเป็น6 + name.length
อักขระในครั้งแรก การเข้าถึงแต่ละครั้งที่ตามมามีค่าใช้จ่ายของ3
ตัวละคร
สำหรับเครื่องหมายจุดทั้งหมดจะเข้าถึงค่าใช้จ่ายname.length + 1
(+1 สำหรับ.
ตัวอักษร)
6 + name.length + (3 * (accesses - 1)) < accesses * (name.length + 1)
ใช้วิธีนี้ถ้า
len = ความยาวของชื่อคุณสมบัติ
i = การเข้าถึงขั้นต่ำเพื่อใช้ประโยชน์
len | i
========
1 | ∞
2 | ∞
3 | 7
4 | 4
5 | 3
6 | 3
7 | 3
8+ | 2
จำนวนการเข้าถึงสามารถขยายหลายวัตถุ หากคุณเข้าถึง.length
4 'length'
ครั้งหรือมากกว่าในอาร์เรย์ที่แตกต่างกันคุณสามารถใช้ตัวแปรเดียวกันถือสตริง
var
หรือไม่? และรหัสกอล์ฟ JavaScript ควรเป็นฟังก์ชั่นหรือส่งออกบางสิ่งบางอย่างโดยตรง? ฉันคิดอย่างจริงใจว่านี่สามารถสร้างความแตกต่างได้มาก