From 91755ace6d724a4b9088d20d68ed607be05aa81c Mon Sep 17 00:00:00 2001 From: Prasit Tongpradit Date: Sun, 11 Jun 2023 10:55:29 +0700 Subject: [PATCH 1/4] Translate use strict --- 1-js/02-first-steps/03-strict-mode/article.md | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/1-js/02-first-steps/03-strict-mode/article.md b/1-js/02-first-steps/03-strict-mode/article.md index d2f7df9fb..56faf1165 100644 --- a/1-js/02-first-steps/03-strict-mode/article.md +++ b/1-js/02-first-steps/03-strict-mode/article.md @@ -1,10 +1,10 @@ -# โหมดใหม่ "use strict" +# โหมดสมัยใหม่, "use strict" -เป็นเวลานานแล้วที่จาวาสคริปต์ออกฟีเจอร์ใหม่ๆโดยไม่มีปัญหาเรื่องความเข้ากันได้ (Compatibility) ถึงจะมีฟีเจอร์ใหม่ๆ แต่ฟีเจอร์เดิมๆก็ยังคงทำงานได้อยู่นั่นเอง +นานมาแล้วที่ JavaScript วิวัฒนาการไปโดยไม่มีปัญหาเรื่องความเข้ากันได้ (compatibility) ฟีเจอร์ใหม่ๆถูกเพิ่มเข้ามาในภาษา ในขณะที่ฟังก์ชั่นที่มีอยู่แล้วไม่มีการเปลี่ยนแปลง -ข้อดีก็คือโค้ดของเรากับโค้ดเมื่อสิบปีที่แล้วก็สามารถทำงานร่วมกันได้ แต่มันมีข้อเสียเพราะตัวผู้สร้างภาษาเอง ก็ดันไปสร้างบาปกำเนิดกับจาวาสคริปต์ด้วย โดยไม่รู้ตัว ดังนั้นเมื่อการหักกับฟีเจอร์เก่าๆแล้ว บาปกำเนิดของจาวาสคริปต์ จึงกลายเป็นคำสาป ชำระล้างไม่ได้ไปตลอดกาล +สิ่งนี้มีข้อดีคือไม่เคยทำให้โค้ดที่มีอยู่แล้วเสียหาย แต่ข้อเสียคือข้อผิดพลาดหรือการตัดสินใจที่ไม่รอบคอบของผู้สร้าง JavaScript จะติดอยู่ในภาษานี่ไปตลอดกาล -จนเวลาล่วงเลยมาถึงปี 2009 มาตรฐานภาษาชุดใหม่เปิดตัว มันคือ ECMAScript5 ที่เพิ่มทั้งฟีเจอร์ใหม่ รวมถึงไปโมฟีเจอร์เก่าๆบางตัวด้วย ผลก็คือ `แหก` นั่นเอง แต่ทางผู้สร้างมาตรฐานชุดนี้ตระหนักในเรื่องนี้ดี เพื่อให้โค้ดเก่าๆทำงานได้ พวกเขาจึงได้ปิดฟีเจอร์โมภาษานี้ไป แต่เราสามารถเปิดตัวโมนี้ได้ผ่านคำสั่ง `"use strict"` +สถานการณ์นี้ยังคงอยู่จนกระทั่งปี 2009 เมื่อ ECMAScript 5 (ES5) มากำกับดูแลสเปคของ JavaScript ทางองค์กรได้เพิ่มฟีเจอร์ใหม่เข้าไปในภาษา และแก้ไขฟีเจอร์ที่มีอยู่บางส่วน และเพื่อรักษาความทำงานของโค้ดเก่า การปรับปรุงส่วนใหญ่โดย ECMAScript จะถูกปิดโดยค่าเริ่มต้น ดังนั้นหากคุณต้องการเปิดใช้งานฟีเจอร์และการปรับปรุงใหม่ๆเข้ามา คุณจะต้องระบุในสคริปต์อย่างชัดเจนด้วยคำสั่งพิเศษ: `"use strict"` ## "use strict" From 2796f10579987cb6173c9830bc82d10020aa30b2 Mon Sep 17 00:00:00 2001 From: Prasit Tongpradit Date: Sun, 11 Jun 2023 11:03:57 +0700 Subject: [PATCH 2/4] Translate use strict --- 1-js/02-first-steps/03-strict-mode/article.md | 67 +++++++++---------- 1 file changed, 32 insertions(+), 35 deletions(-) diff --git a/1-js/02-first-steps/03-strict-mode/article.md b/1-js/02-first-steps/03-strict-mode/article.md index 56faf1165..e8d789e26 100644 --- a/1-js/02-first-steps/03-strict-mode/article.md +++ b/1-js/02-first-steps/03-strict-mode/article.md @@ -8,85 +8,82 @@ ## "use strict" -ตัวคำสั่งหน้าตาเหมือนสตริง `"use strict"` หรือ `'use strict'` แต่คำสั่นี้จะต้องอยู่บนสุดของสคริปต์คือบรรทัดที่หนึ่ง ทีนี้สคริปต์ทั้งหมดของเราก็ทำงานแบบ "สมัยใหม่ (modern)" +คำสั่งดังกล่าวนี้จะมีลักษณะเหมือนสตริง: `"use strict"` หรือ `"use strict"` เมื่อวางไว้ที่บนสุดของสคริปต์ สคริปต์ทั้งหมดจะทำงานในรูปแบบ "สมัยใหม่" -ดั่งตัวอย่าง: +ตัวอย่างเช่น: ```js "use strict"; -// โค้ดที่เขียนต่อจากนี้จะทำงานแบบจาวาสคริปต์สมัยใหม่ +// โค้ดนี้จะทำงานในแบบสมัยใหม่ ... ``` -เราจะเรียนรู้เรื่องฟังก์ชั่น (วิธีการจัดกลุ่มคำสั่ง) ในไม่ช้า แต่อยากบอกในเบื้องต้นว่า `"use strict"` สามารถวางไว้ที่บรรทัดเริ่มต้นของฟังก์ชั่นได้ เพื่อจะใช้โหมด `"use strict"` แค่ในฟังก์ชั่นนี้เท่านั้น แต่ปกติแล้ว นิยมวางไว้บรรทัดแรกมากกว่าแต่เปิดใช้ทั้งไฟล์สคริปต์ +ไม่ช้าเราจะได้เรียนรู้เรื่องฟังก์ชัน (วิธีการจัดกลุ่มคำสั่ง) ดังนั้นโปรดจงรู้ไว้ว่า `"use strict"` สามารถวางไว้ที่หน้าของฟังก์ชันได้ การกระทำนี้เปิดโหมดสมัยใหม่สำหรับฟังก์ชันตัวนั้นเท่านั้น แต่ปกติเรามักจะวางไว้บนสุดของสคริปต์ +````warn header="เช็คให้แน่ใจว่า \"use strict\" อยู่บนสุดของสคริปต์เสมอ" +โปรดทำให้แน่ใจว่า `"use strict"` อยู่ที่บนสุดของสคริปต์ มิเช่นนั้น โหมดสมัยใหม่อาจจะไม่ถูกเปิดใช้งาน -````warn header="อย่าลืมว่า \"use strict\" ต้องอยู่บรรทัดแรกเสมอ" -อย่าลืมว่า `"use strict"` ต้องอยู่บรรทัดแรกของไฟล์สคริปต์เสมอ ไม่อย่างนั้นโหมดนี้จะไม่ทำงาน - -เช่นตัวอย่างด้านล่าง +โหมดสมัยใหม่ไม่ถูกเปิดใช้งานที่นี่: ```js no-strict alert("some code"); -// ตัวเอนจินจะไม่สนใจ "use strict" ด้านล่าง โหมดนี้จึงไม่ได้ถูกทำงาน +// "use strict" ด้านล่างนี้จะถูกละเลย -- มันต้องอยู่ที่บนสุด "use strict"; -// strict mode จะไม่ทำงาน +// โหมดสมัยใหม่จะไม่ถูกเปิดใข้งาน ``` -หากมีคอมเม้นอยู่เหนือ "use strict" ตัวของ "use strict" ก็จะทำปกติ +เพียงแค่คอมเม้นที่อยู่เหนือ `"use strict"` เท่านั้น ```` -```warn header="ไม่มีทางยกเลิกโหมด `use strict` ได้" -มันไม่มีคำสั่งอย่าง "no use strict" เพื่อได้เอนจินกลับไปทำงานในโหมดเดิมได้ +```warn header="ไม่มีทางปิดโหมดสมัยใหม่จากคำสั่ง `use strict` ได้" +ไม่มีคำสั่งเช่น `"no use strict"` ที่จะคืนสภาพโหมดสมัยเก่ากลับมาได้ -ดังนั้นเมื่อเราเปิดโหมด `use strict` แล้ว เราก็ไม่มีทางปิดมันได้ +เมื่อเราเข้าสู่โหมด "สมัยใหม่" แล้ว มันจะไม่มีทางกลับมาเป็น "สมัยเก่า" อีกต่อไป ``` -## คอนโซลบนเบราเซอร์ +## Browser console + +When you use a [developer console](info:devtools) to run code, please note that it doesn't `use strict` by default. -หากเราใช้[คอนโซลนักพัฒนา](info:devtools) เพื่อรันโค้ด คอนโซลบนเบราเซอร์ปิด `use strict` เอาไว้เป็นค่าเริ่มต้น +Sometimes, when `use strict` makes a difference, you'll get incorrect results. -แล้ว ถ้าอยากใช้ `use strict ในคอนโซลจะทำไงดี +So, how to actually `use strict` in the console? -ก่อนอื่น ให้พิมพ์ `use strict` ไว้ก่อนแล้วให้กด `key:Shift+Enter` เพื่อขึ้นบรรทัดใหม่ +First, you can try to press `key:Shift+Enter` to input multiple lines, and put `use strict` on top, like this: ```js 'use strict'; -// ...โค้ดของเรา -<อย่าลืมกด Enter เพื่อให้โค้ดทำงาน> +// ...your code + ``` -ฟีเจอร์นี้รับรองบนเบราเซอร์ส่วนใหญ่แล้วอย่าง Chrome และ Firefox +It works in most browsers, namely Firefox and Chrome. -หากใช้ไม่ได้ นั่นแสดงว่าเรากำลังใช้งานเบราเซอร์ที่เก่าเอามากๆ ดังนั้นเพื่อให้แน่ใจได้ว่า `use strict` จะถูกใช้กับทุกคำสั่งที่เราป้อนลงในคอนโซล ลองทำตามตัวอย่างโค้ดด้านล่างดูสิ +If it doesn't, e.g. in an old browser, there's an ugly, but reliable way to ensure `use strict`. Put it inside this kind of wrapper: ```js (function() { 'use strict'; - // ...ใส่โค้ดที่ต้องการตั้งแต่ตรงนี้... + // ...your code here... })() ``` -## ควรเปิด "use strict" - -คำตอบก็คือควร +## Should we "use strict"? -ดังนั้นให้เขียน `"use strict"` จนเป็นนิสัยได้เลย แต่ยังมีเกร็ดเล็กน้อยอีกนิดนึง +The question may sound obvious, but it's not so. -ใน Modern Javascript ได้สนับสนุน "classes" และ "modules" ซึ่งยังไม่สอนตอนนี้ (แต่เดี๋ยวเข้าใจแน่นอน) ที่อยากจะบอกก็คือ มันเปิด `use strict` โดยอัตโนมัติ ดังนั้นเราไม่ต้องเพิ่ม `"use strict"` ในสคริปต์เลย +One could recommend to start scripts with `"use strict"`... But you know what's cool? -จนถึงตอนนี้ เราก็รู้จักกับ `use strict` ในเบื้องต้นกันแล้ว +Modern JavaScript supports "classes" and "modules" - advanced language structures (we'll surely get to them), that enable `use strict` automatically. So we don't need to add the `"use strict"` directive, if we use them. -ในบทภัดไป เราจะเรียนเกี่ยวกับฟีเจอร์ของภาษา เราจะได้เห็นความแตกต่างระหว่าง แบบใช้ `use strict` กับแบบไม่ใช้ มาดูกันว่า `use strict` ช่วยให้เราชีวิตง่ายขึ้นยังไง +**So, for now `"use strict";` is a welcome guest at the top of your scripts. Later, when your code is all in classes and modules, you may omit it.** -ทุกตัวอย่างในบทเรียนใช้ `use strict` หมด จะมีอยู่น้อยมากที่เราตั้งใจจะไม่ใช้ +As of now, we've got to know about `use strict` in general. -1. คำสั่ง `"use strict"` เป็นคำสั่งสำหรับเอนจินยุค ES5 ซึ่งเอาไว้สลับโหมดระหว่างโหมดปกติกับโหมด `"use strict"` เราจะมาพูดถึงรายละเอียดกันอีกทีในบทถัดไป -2. เปิด strict โหมดง่ายๆเพียงแค่ใส่ `"use strict"` ไว้บนสุดของสคริปต์หรือฟังก์ชัน เมื่อเอนจินอ่านเจอมันจะเปิดโหมดนี้โดยอัตโนมัติ -3. โมเดิร์นเบราเซอร์ รองรับโหมด strict ทั้งหมดแล้ว -4. แนะนำว่าควรเปิด strict โหมดไว้เสมอ +In the next chapters, as we learn language features, we'll see the differences between the strict and old modes. Luckily, there aren't many and they actually make our lives better. +All examples in this tutorial assume strict mode unless (very rarely) specified otherwise. \ No newline at end of file From 66faea26f5ad757d2580ef0122b7c76ac89e6286 Mon Sep 17 00:00:00 2001 From: Prasit Tongpradit Date: Sun, 11 Jun 2023 11:09:39 +0700 Subject: [PATCH 3/4] Translate use strict --- 1-js/02-first-steps/03-strict-mode/article.md | 20 +++++++++---------- 1 file changed, 10 insertions(+), 10 deletions(-) diff --git a/1-js/02-first-steps/03-strict-mode/article.md b/1-js/02-first-steps/03-strict-mode/article.md index e8d789e26..17a7089b2 100644 --- a/1-js/02-first-steps/03-strict-mode/article.md +++ b/1-js/02-first-steps/03-strict-mode/article.md @@ -4,7 +4,7 @@ สิ่งนี้มีข้อดีคือไม่เคยทำให้โค้ดที่มีอยู่แล้วเสียหาย แต่ข้อเสียคือข้อผิดพลาดหรือการตัดสินใจที่ไม่รอบคอบของผู้สร้าง JavaScript จะติดอยู่ในภาษานี่ไปตลอดกาล -สถานการณ์นี้ยังคงอยู่จนกระทั่งปี 2009 เมื่อ ECMAScript 5 (ES5) มากำกับดูแลสเปคของ JavaScript ทางองค์กรได้เพิ่มฟีเจอร์ใหม่เข้าไปในภาษา และแก้ไขฟีเจอร์ที่มีอยู่บางส่วน และเพื่อรักษาความทำงานของโค้ดเก่า การปรับปรุงส่วนใหญ่โดย ECMAScript จะถูกปิดโดยค่าเริ่มต้น ดังนั้นหากคุณต้องการเปิดใช้งานฟีเจอร์และการปรับปรุงใหม่ๆเข้ามา คุณจะต้องระบุในสคริปต์อย่างชัดเจนด้วยคำสั่งพิเศษ: `"use strict"` +สถานการณ์นี้ยังคงอยู่จนกระทั่งปี 2009 เมื่อ ECMAScript 5 (ES5) มากำกับดูแลสเปคของ JavaScript ทางองค์กรได้เพิ่มฟีเจอร์ใหม่เข้าไปในภาษา และแก้ไขฟีเจอร์ที่มีอยู่บางส่วน และเพื่อรักษาความทำงานของโค้ดเก่า การปรับปรุงส่วนใหญ่โดย ECMAScript จะถูกปิดโดยค่าเริ่มต้น ดังนั้นหากเราต้องการเปิดใช้งานฟีเจอร์และการปรับปรุงใหม่ๆเข้ามา เราจะต้องระบุในสคริปต์อย่างชัดเจนด้วยคำสั่งพิเศษ: `"use strict"` ## "use strict" @@ -44,31 +44,31 @@ alert("some code"); เมื่อเราเข้าสู่โหมด "สมัยใหม่" แล้ว มันจะไม่มีทางกลับมาเป็น "สมัยเก่า" อีกต่อไป ``` -## Browser console +## คอนโซลเบราว์เซอร์ -When you use a [developer console](info:devtools) to run code, please note that it doesn't `use strict` by default. +เมื่อเราใช้ [คอนโซลนักพัฒนาซอฟต์แวร์ (developer console)](info:devtools) เพื่อรันโค้ด โปรดทราบว่ามันไม่ได้ใช้ `use strict` ตามค่าเริ่มต้น -Sometimes, when `use strict` makes a difference, you'll get incorrect results. +บางครั้ง เมื่อ `use strict` จึงทำให้เกิดผลลัพธ์ที่แตกต่างกัน เราจะได้ผลลัพธ์ที่ไม่ถูกต้อง -So, how to actually `use strict` in the console? +ดังนั้น วิธีการที่จะ `use strict` ในคอนโซลจริงๆคืออย่างไร? -First, you can try to press `key:Shift+Enter` to input multiple lines, and put `use strict` on top, like this: +แรกเริ่ม เราสามารถลองกด `key:Shift+Enter` เพื่อป้อนคำสั่งหลายบรรทัดและวาง `use strict` ที่ด้านบน เช่น: ```js 'use strict'; -// ...your code +// ...โค้ดเรา ``` -It works in most browsers, namely Firefox and Chrome. +มันทำงานได้ในเบราว์เซอร์ส่วนใหญ่ โดยเฉพาะ Firefox และ Chrome -If it doesn't, e.g. in an old browser, there's an ugly, but reliable way to ensure `use strict`. Put it inside this kind of wrapper: +หากไม่ทำงาน เช่นในเบราว์เซอร์เก่า มีวิธีที่ไม่ค่อยสวยเท่าไหร่ แต่ทำให้เบราเซอร์เก่าเปิดใช้งานโหมดสมัยใหม่ได้ `use strict` โดยล้อมมันวางด้วยวงเล็บแบบนี้: ```js (function() { 'use strict'; - // ...your code here... + // ...โค้ดเราที่นี่... })() ``` From 5814eaaae6070afc96588665fb317c19a40bd20b Mon Sep 17 00:00:00 2001 From: Prasit Tongpradit Date: Sun, 11 Jun 2023 11:16:16 +0700 Subject: [PATCH 4/4] Translate use strict --- 1-js/02-first-steps/03-strict-mode/article.md | 16 ++++++++-------- 1 file changed, 8 insertions(+), 8 deletions(-) diff --git a/1-js/02-first-steps/03-strict-mode/article.md b/1-js/02-first-steps/03-strict-mode/article.md index 17a7089b2..04b52b086 100644 --- a/1-js/02-first-steps/03-strict-mode/article.md +++ b/1-js/02-first-steps/03-strict-mode/article.md @@ -72,18 +72,18 @@ alert("some code"); })() ``` -## Should we "use strict"? +## ควรใช้ "use strict" หรือไม่? -The question may sound obvious, but it's not so. +คำถามนี้อาจดูชัดเจน แต่จริงๆแล้วไม่ได้เช่นนั้น -One could recommend to start scripts with `"use strict"`... But you know what's cool? +มีคำแนะนำมากมายให้เริ่มสคริปต์ด้วย `"use strict"`... แต่เรารู้อะไรน่าสนใจบ้างไหม? -Modern JavaScript supports "classes" and "modules" - advanced language structures (we'll surely get to them), that enable `use strict` automatically. So we don't need to add the `"use strict"` directive, if we use them. +JavaScript สมัยใหม่รองรับ "classes" และ "modules" - โครงสร้างภาษาขั้นสูงที่เปิดใช้งาน `use strict` โดยอัตโนมัติ ดังนั้นเราไม่จำเป็นต้องเพิ่มคำสั่ง`"use strict"` หากเราใช้โครงสร้างเหล่านี้ -**So, for now `"use strict";` is a welcome guest at the top of your scripts. Later, when your code is all in classes and modules, you may omit it.** +**ดังนั้น `"use strict";` จะถูกเติมเข้ามาเอง เมื่อโค้ดเราอยู่ใน "classes" หรือ "modules"** -As of now, we've got to know about `use strict` in general. +เราได้ทราบเกี่ยวกับ `use strict` โดยทั่วไป -In the next chapters, as we learn language features, we'll see the differences between the strict and old modes. Luckily, there aren't many and they actually make our lives better. +ในบทที่จะถึงนี้ เมื่อเราเรียนรู้ฟีเจอร์ของภาษา เราจะเห็นความแตกต่างระหว่างโหมดใหม่และเก่า โชคดีที่ความแตกต่างไม่ได้มีมากจนทำให้พวกเราต้องปวดหัว -All examples in this tutorial assume strict mode unless (very rarely) specified otherwise. \ No newline at end of file +ตัวอย่างทั้งหมดในบทนี้สมมุติว่าอยู่ในโหมดสมัยใหม่ ยกเว้น (เราคิดว่าน้อยมาก) ที่ระบุไว้เป็นอย่างอื่น \ No newline at end of file