Skip to content

Commit

Permalink
Update th-TH.md (mbeaudru#117)
Browse files Browse the repository at this point in the history
I update translation more easily reading but not change any meaning.

@notsu

ขอบคุณแทน dev คนไทยด้วยนะครับที่แปลภาษาไทยให้ สุดยอดเลยครับ 
พอดีอยากจะช่วยแปลในบางส่วนที่คิดว่าอาจจะอ่านง่ายขึ้นนะครับ ไม่ได้มีเจตนาว่าที่คุณแปลมาก่อนนั้นไม่ดี แค่อยากจะช่วยปรับปรุงด้วยครับ
ถ้ามีเวลาจะมาช่วยดูอีกนะครับผม :)
  • Loading branch information
Elecweb authored and mbeaudru committed Aug 7, 2018
1 parent d3dc7dc commit 5dbba00
Showing 1 changed file with 15 additions and 15 deletions.
30 changes: 15 additions & 15 deletions translations/th-TH.md
Original file line number Diff line number Diff line change
Expand Up @@ -5,15 +5,15 @@

## เกริ่นนำ

### ที่มาที่ไป
### จุดประสงค์

เอกสารนี้เป็น cheatsheet สำหรับ JavaScript ที่จะแนะนำและอธิบายสิ่งที่เราน่าจะพบเจอบ่อยใน​โปรเจ็คใหม่ๆ หรือโค้ดตัวอย่างใหม่ๆ
เอกสารนี้เป็น cheatsheet ชุดคำสั่งของภาษา JavaScript ที่คุณได้พบเจอเป็นประจำใน​โปรเจ็คและโค้ดตัวอย่างใหม่ๆ

ซึ่งในบทความนี้จะไม่ได้สอน Javascript ตั้งแต่พื้นฐานให้ แต่จะช่วย Developer ที่มีพื้นฐานอยู่แล้วแต่ติดปัญหาหรือไม่เข้าใจ ได้เข้าใจคอนเซปของ Javascript สมัยใหม่ (ยกตัวอย่างเช่นกำลังเรียนรู้ React)
บทความนี้ไม่ได้มีจุดประสงค์ในการสอน Javascript ตั้งแต่พื้นฐาน แต่ต้องการจะช่วยให้ Developer ที่มีพื้นฐานอยู่แล้วแต่อาจจะติดปัญหาในการเข้าใจในโค้ด Javascript สมัยใหม่ (ยกตัวอย่างเช่นกำลังเรียนรู้ React อยู่) เนื่องจากมีการใช้ concept ของ Javascript สมัยใหม่

นอกจากนี้บทความนี้ได้มีแนะนำทิปส่วนตัวแนบไว้บางส่วนซึ่งสามารถมาโต้แย้งหรือช่วยกันเสนอแนะได้ โดยจะมีหมายเหตุบอกเอาไว้
นอกจากนี้ผมจะแนะนำเคล็ดลับส่วนตัว(ซึ่งอาจจะมีบางคนไม่เห็นด้วย)ใส่ไว้ในบางส่วน โดยจะมีหมายเหตุบอกเอาไว้

> **หมายเหตุ:** คอนเซปส่วนใหญ่ในนี้จะมาจากอัปเดตใหม่ๆ ที่กำลังเป็นมาตรฐานของภาษา JavaScript (ES2015, หรือโดยทั่วไปเรียกว่า ES6). คุณสามารถดูฟีเจอร์ใหม่ๆ ที่เพิ่มเข้ามาโดยติดตามได้จากอัปเดต [ที่นี่](http://es6-features.org); ซึ่งมีครบเลยทุกข้อ
> **หมายเหตุ:** คอนเซปส่วนใหญ่ในนี้จะมาจากการอัปเดตใหม่ๆของ JavaScript (ES2015, หรือโดยทั่วไปเรียกว่า ES6). คุณสามารถดูฟีเจอร์ใหม่ๆของ Javascript ที่เพิ่มเข้ามาโดยสามารถติดตามได้จาก [ที่นี่](http://es6-features.org); ซึ่งเป็นเว็บไซต์ที่ดีทีเดียว
### แหล่งเรียนรู้ฟรีที่แนะนำเพิ่มเติม

Expand All @@ -32,7 +32,7 @@

- [Modern JavaScript cheatsheet](#modern-javascript-cheatsheet)
* [เกริ่นนำ](#เกริ่นนำ)
+ [ที่มาที่ไป](#ที่มาที่ไป)
+ [จุดประสงค์](#จุดประสงค์)
+ [แหล่งเรียนรู้ฟรีที่แนะนำเพิ่มเติม](#แหล่งเรียนรู้ฟรีที่แนะนำเพิ่มเติม)
* [สารบัญ](#สารบัญ)
* [เนื้อหา](#เนื้อหา)
Expand Down Expand Up @@ -117,7 +117,7 @@

ตัวแปรที่ประกาศโดยใช้ ```const``` จะไม่สามารถถูก assign ค่าให้กับตัวแปรใหม่ได้ ในขณะที่ ```let``` กับ ```var``` สามารถทำได้

แนะนำให้ประกาศตัวแปรด้วย ```const``` เป็นปกติไปก่อน และค่อยเปลี่ยนเป็น ```let``` เมื่อพบว่าตัวแปรนั้นต้องการการ*เปลี่ยนแปลงค่า (mutate)* หรือว่ามีการ assign ค่าให้ตัวแปรในภายหลัง
ผมแนะนำให้ประกาศตัวแปรด้วย ```const``` เสมอและค่อยเปลี่ยนเป็น ```let``` ถ้าคุณต้องการ*เปลี่ยนแปลงค่า (mutate)* หรือ assign ค่าให้ตัวแปรในภายหลัง

<table>
<tr>
Expand Down Expand Up @@ -165,20 +165,20 @@ console.log(person) // "John", let จะยอมให้สามารถ as

#### อธิบายรายละเอียด

[*scope*](#scope_def) ของตัวแปรคร่าวๆ แล้วหมายถึง "ขอบเขตที่ตัวแปรสามารถใช้งานได้ภายในโค้ด"
อธิบาย [*scope*](#scope_def) ของตัวแปรได้อย่างคร่าวๆ หมายถึง "ขอบเขตที่ตัวแปรสามารถใช้งานได้ภายในโค้ด"

##### var

ตัวแปรที่ถูกประกาศด้วย ```var``` จะเป็น *function scoped* หมายถึงว่าเมื่อตัวแปรถูกสร้างภายใน function ทุกอย่างภายใน function นั้นสามารถเข้าถึงตัวแปรนั้นได้ และตัวแปรที่ถูกสร้างเป็น *function scoped* ใน function จะไม่สามารถถูกเข้าถึงจากภายนอก function ได้
ตัวแปรที่ถูกประกาศด้วย ```var``` จะเป็น *function scoped* เมื่อตัวแปรถูกสร้างภายใน function โค้ดใน function นั้นสามารถเข้าถึงตัวแปรนั้นได้ และตัวแปร *function scoped* ที่ถูกสร้างใน function จะไม่สามารถถูกเข้าถึงจากภายนอก function ได้

แนะนำให้ลองจินตนาการว่าถ้าตัวแปรเป้นตัวแปร *X scoped* หมายความว่าตัวแปรนี้เป็นทรัพย์สินของ X เท่านั้น
แนะนำให้ลองจินตนาการดูว่าถ้าตัวแปรเป็นตัวแปร *X scoped* หมายความว่าตัวแปรนี้เป็น property ของ X เท่านั้น

```javascript
function myFunction() {
var myVar = "Nick";
console.log(myVar); // "Nick" - myVar จะสามารถเข้าถึงได้จากภายใน function
}
console.log(myVar); // จะเกิด ReferenceError เพราะ myVar จะไม่สามารถเข้าถึงได้จากภายนอก function
console.log(myVar); // จะเกิด ReferenceError เพราะ myVar ไม่สามารถเข้าถึงได้จากภายนอก function
```

ตัวอย่างเพิ่มเติมสำหรับเรื่อง scope ของตัวแปร
Expand All @@ -189,14 +189,14 @@ function myFunction() {
if (true) {
var myVar = "John";
console.log(myVar); // "John"
// จริงๆ แล้ว myvar เป็นตัวแปร function scoped นั่นหมายความว่าตอนนี้เราได้ลบค่าตัวแปร myVar ก่อนหน้าจาก "Nick" กลายเป็น "John"
// จริงๆ แล้ว myvar เป็นตัวแปร function scoped เราแค่ได้ลบค่าตัวแปร myVar จาก "Nick" และเปลี่ยนเป็น "John"
}
console.log(myVar); // "John" - จะเห้นว่าค่าได้ถูกเปลี่ยนไปแล้ว
console.log(myVar); // "John" - จะเห็นได้ว่าค่าได้ถูกเปลี่ยนไปแล้ว
}
console.log(myVar); // จะเกิด ReferenceError เพราะ myVar จะไม่สามารถเข้าถึงได้จากภายนอก function
console.log(myVar); // จะเกิด ReferenceError เพราะ myVar ไม่สามารถเข้าถึงได้จากภายนอก function
```

นอกจากนี้ตัวแปรที่ประกาสด้วย *var* จะถูกย้ายไปอยู่ด้านบนสุดของ scope เมื่อมีการ execution และนี่คือสิ่งที่เราเรียกว่า [var hoisting](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Statements/var#var_hoisting).
นอกจากนี้ตัวแปรที่ประกาสด้วย *var* จะถูกย้ายตอน execution ไปอยู่ด้านบนสุดของ scope และนี่คือสิ่งที่เราเรียกว่า [var hoisting](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Statements/var#var_hoisting).

โค้ดตัวอย่างกรณีนี้:

Expand Down

0 comments on commit 5dbba00

Please sign in to comment.