วันนี้เจอบัคในการใช้ function parseInt() นั่นคือ
ถ้าเรียก parseInt('08') หรือ parseInt('09') จะได้ค่า 0 กลับมาเสมอ
เพราะอะไร???
คำตอบ parseInt ไม่ได้มี parameter แค่ตัวเดียว
แต่มี 2 ตัว โดยตัวที่สองคือเลขฐานนั่นเอง
เช่นถ้าเราต้องการแปลงตัวเลขฐาน 10 ก็ให้ใส่ 10 เป็น parameter ที่สองเช่น
Code
a = parseInt('08', 10);
document.write(a);Output
8
ซึ่งปรกติเราจะไม่ได้ใส่ parameter ตัวที่สองไว้ ทำให้ javascript ต้องหาฐานของเลขเอง
โดยถ้า string ขึ้นต้นด้วย 0x จะคิดว่าเป็นเลขฐาน 16
ถ้าขึ้นต้นด้วย 0 จะคิดว่าเป็นเลขฐาน 8
<script type="text/javascript">
<!-- <![CDATA[
alert('Yow!');
// ]]> -->
</script>
วันนี้ผมลองดู code ของ prototype.js (http://prototypejs.org/)
เห็นตรงนี้ครับ
BrowserFeatures: {
XPath: !!document.evaluate,
SelectorsAPI: !!document.querySelector,
ElementExtensions: !!window.HTMLElement,
SpecificElementExtensions:
document.createElement('div')['__proto__'] &&
document.createElement('div')['__proto__'] !==
document.createElement('form')['__proto__']
},
ก็งงว่า !! คืออะไร เป็นเครื่องหมายที่ผมไม่รู้จักเหรอ
พอนึก ๆ ดู อืม... มันก็คือ not not ซึ่งก็คือทำให้ได้ค่า boolean เหมือนเดิม
ขอบคุณ Douglas Crockford ครับผม
Credit: Douglas Crockford - http://javascript.crockford.com/code.html
JavaScript File
- ชื่อ file จะต้องลงท้ายด้วย .js เสมอ
- ไม่ควร embed JavaScript code ใน HTML ถ้า code นั้นไม่ได้ใช้กับ file นั้น file เดียว
เพื่อประโยชน์ในการใช้งาน cache ให้เต็มที่
- tag script ควรจะอยู่ท้ายที่สุดเท่าที่จะทำได้ เพื่อไม่ให้ไปรบกวนการโหลด static element ของหน้านั้น
Indentation - การย่อหน้า
Crockford แนะนำให้ใช้ 4 space แต่ผมใช้แค่ 2 ครับ
JSON (JavaScript Object Notation) ไม่ใช่ Jason ชื่อคนนะอิอิ