tek4

Cú pháp ‘use strict’ trong JavaScript

by - September. 26, 2021
Kiến thức
Học
<p><img class="aligncenter wp-image-8253 size-full" src="https://tek4.vn/wp-content/uploads/2021/02/Capture-68.png" alt="C&uacute; ph&aacute;p 'use strict' trong JavaScript" width="754" height="443" /></p> <p>Trong b&agrave;i viết n&agrave;y, ta sẽ c&ugrave;ng t&igrave;m hiểu về c&uacute; ph&aacute;p 'use strict' trong Javascript c&ugrave;ng với sự trợ gi&uacute;p của c&aacute;c v&iacute; dụ dẫn chứng.</p> <h1>'use strict' trong JavaScript</h1> <p>C&uacute; ph&aacute;p 'use strict' chỉ định đoạn m&atilde; trong JavaScript phải được thực thi ở chế độ nghi&ecirc;m ngặt. Điều n&agrave;y gi&uacute;p đoạn m&atilde; viết bằng JavaScript được đảm bảo v&agrave; an to&agrave;n hơn.</p> <p>V&iacute; dụ:</p> <pre class="EnlighterJSRAW" data-enlighter-language="generic">a = 100;</pre> <p>Ở đ&acirc;y, biến a được tạo m&agrave; kh&ocirc;ng cần khai b&aacute;o. Biến n&agrave;y hoạt động như một biến to&agrave;n cục trong JavaScript. Tuy nhi&ecirc;n, nếu ta triển khai ở chế độ nghi&ecirc;m ngặt, chương tr&igrave;nh sẽ th&ocirc;ng b&aacute;o lỗi.</p> <p>V&iacute; dụ:</p> <pre class="EnlighterJSRAW" data-enlighter-language="js">'use strict'; a = 100;</pre> <p>Kết quả sẽ nhận l&agrave; lỗi được đưa ra.</p> <p>Đoạn m&atilde; tr&ecirc;n sẽ g&acirc;y ra lỗi v&igrave; biến a kh&ocirc;ng được khai b&aacute;o. Trong chế độ nghi&ecirc;m ngặt, ta sẽ kh&ocirc;ng thể sử dụng biến m&agrave; kh&ocirc;ng khai b&aacute;o. Để chỉ định chương tr&igrave;nh hoạt động ở chế độ nghi&ecirc;m ngặt, ch&uacute;ng ta sử dụng c&uacute; ph&aacute;p <code class="EnlighterJSRAW" data-enlighter-language="generic">'use strict';</code>&nbsp;v&agrave; đặt n&oacute; ở tr&ecirc;n đầu chương tr&igrave;nh.</p> <p>Khi ta khai b&aacute;o chế độ nghi&ecirc;m ngặt ở đầu chương tr&igrave;nh, n&oacute; sẽ c&oacute; phạm vi to&agrave;n cục v&agrave; tất cả đoạn m&atilde; trong chương tr&igrave;nh sẽ được thực thi ở chế độ nghi&ecirc;m ngặt.</p> <h2>Chế độ nghi&ecirc;m ngặt cho biến</h2> <p>Trong chế độ nghi&ecirc;m ngặt, việc sử dụng một biến m&agrave; kh&ocirc;ng khai b&aacute;o sẽ g&acirc;y ra lỗi.</p> <p><strong><span style="background-color: #ffff00;">Ch&uacute; &yacute;: Ta cần khai b&aacute;o chế độ nghi&ecirc;m ngặt khi bắt đầu chương tr&igrave;nh. Nếu ta khai b&aacute;o chế độ nghi&ecirc;m ngặt b&ecirc;n dưới đoạn m&atilde;, n&oacute; sẽ kh&ocirc;ng c&oacute; t&aacute;c dụng.</span></strong></p> <p>V&iacute; dụ:</p> <pre class="EnlighterJSRAW" data-enlighter-language="js">console.log("Javascript"); "use strict"; x = 100;</pre> <p>Kết quả:</p> <pre>Javascript 100</pre> <h2>Chế độ nghi&ecirc;m ngặt cho c&aacute;c h&agrave;m</h2> <p>Ta cũng c&oacute; thể sử dụng chế độ nghi&ecirc;m ngặt b&ecirc;n trong một h&agrave;m.</p> <p>V&iacute; dụ:</p> <pre class="EnlighterJSRAW" data-enlighter-language="js">a = 200; console.log(a); function vi_du() { &nbsp;&nbsp;&nbsp; 'use strict'; &nbsp;&nbsp;&nbsp; b = 100; } vi_du();</pre> <p>Kết quả:</p> <pre>ReferenceError: b is not defined</pre> <p>Nếu ta sử dụng "use strict" b&ecirc;n trong một h&agrave;m, đoạn m&atilde; b&ecirc;n trong h&agrave;m sẽ ở chế độ nghi&ecirc;m ngặt. Trong chương tr&igrave;nh tr&ecirc;n, "use strict" được sử dụng b&ecirc;n trong h&agrave;m vi_du(). Do đ&oacute;, chế độ nghi&ecirc;m ngặt chỉ được &aacute;p dụng b&ecirc;n trong h&agrave;m.</p> <p>Như đ&atilde; thấy, trong phần đầu của chương tr&igrave;nh, biến a được sử dụng m&agrave; kh&ocirc;ng cần khai b&aacute;o. Nếu ta khai b&aacute;o "use strict" ở đầu chương tr&igrave;nh, ta cũng sẽ kh&ocirc;ng thể sử dụng một biến m&agrave; kh&ocirc;ng khai b&aacute;o n&oacute; b&ecirc;n trong h&agrave;m.</p> <p>V&iacute; dụ:</p> <pre class="EnlighterJSRAW" data-enlighter-language="js">'use strict'; function vi_du() { &nbsp;&nbsp;&nbsp; b = 100; } vi_du();</pre> <p>Kết quả:</p> <pre>ReferenceError: b is not defined</pre> <p><strong><span style="background-color: #ffff00;">Ch&uacute; &yacute;: Chế độ nghi&ecirc;m ngặt kh&ocirc;ng &aacute;p dụng cho c&aacute;c khối lệnh c&oacute; dấu ngoặc nhọn {}.</span></strong></p> <h2>Những điều kh&ocirc;ng được ph&eacute;p khi sử dụng chế độ nghi&ecirc;m ngặt</h2> <p><em>1. Biến chưa được khai b&aacute;o.</em></p> <p>V&iacute; dụ:</p> <pre class="EnlighterJSRAW" data-enlighter-language="js">'use strict'; a = 100;</pre> <p><em>2. C&aacute;c đối tượng chưa được khai b&aacute;o</em></p> <p>V&iacute; dụ:</p> <pre class="EnlighterJSRAW" data-enlighter-language="js">'use strict'; a = {ID: 100};</pre> <p><em>3. Kh&ocirc;ng được ph&eacute;p x&oacute;a một đối tượng.</em></p> <p>V&iacute; dụ:</p> <pre class="EnlighterJSRAW" data-enlighter-language="js">'use strict'; let a = {ID: 100}; delete a;</pre> <p><em>4. Kh&ocirc;ng được ph&eacute;p sao ch&eacute;p t&ecirc;n tham số.</em></p> <pre class="EnlighterJSRAW" data-enlighter-language="js">"use strict"; function vi_du(a, a) { &nbsp;&nbsp;&nbsp; console.log('Javascript'); }; vi_du();</pre> <p><em>5. Kh&ocirc;ng được ph&eacute;p g&aacute;n cho một thuộc t&iacute;nh m&agrave; kh&ocirc;ng thể ghi gi&aacute; trị v&agrave;o đ&oacute;.</em></p> <pre class="EnlighterJSRAW" data-enlighter-language="js">'use strict'; let a = {}; Object.defineProperty(a, 'x', { ID: 42, writable: false }); a.x = 100;</pre> <p><em>6. Kh&ocirc;ng được ph&eacute;p g&aacute;n một thuộc t&iacute;nh chỉ được xem.</em></p> <p>V&iacute; dụ:</p> <pre class="EnlighterJSRAW" data-enlighter-language="js">'use strict'; let a = { get x() { return 200;} }; a.x = 100;</pre> <p><em>7. Kh&ocirc;ng được ph&eacute;p g&aacute;n cho một thuộc t&iacute;nh mới tr&ecirc;n một đối tượng m&agrave; kh&ocirc;ng thể triển khai th&ecirc;m.</em></p> <p>V&iacute; dụ:</p> <pre class="EnlighterJSRAW" data-enlighter-language="js">'use strict'; let a = {}; Object.preventExtensions(a); a.x = 100;</pre> <p>8. Kh&ocirc;ng được ph&eacute;p sử dụng hệ số b&aacute;t ph&acirc;n (hệ số 8).</p> <p>V&iacute; dụ:</p> <pre class="EnlighterJSRAW" data-enlighter-language="js">'use strict'; let a = 0123;</pre> <p><em>9. Kh&ocirc;ng được ph&eacute;p sử dụng arguments&nbsp;v&agrave; eval.</em></p> <p>V&iacute; dụ:</p> <pre class="EnlighterJSRAW" data-enlighter-language="js">'use strict'; let arguments = 'Javascript'; let eval = 200;</pre> <p><em>10. Kh&ocirc;ng thể sử dụng c&aacute;c từ kh&oacute;a b&ecirc;n dưới đ&acirc;y ở chế độ nghi&ecirc;m ngặt.</em></p> <pre class="EnlighterJSRAW" data-enlighter-language="generic">Implements/ interface/ let/ package/ private/ protected/ public/ static/ yield</pre> <h2>Lợi &iacute;ch của việc sử dụng chế độ nghi&ecirc;m ngặt</h2> <ul> <li>Gi&uacute;p viết đoạn m&atilde; r&otilde; r&agrave;ng hơn.</li> <li>Thay đổi c&aacute;c lỗi m&agrave; được chấp nhận trước đ&oacute; (c&uacute; ph&aacute;p sai) th&agrave;nh lỗi bắt buộc cần phải xử l&yacute; v&agrave; đưa ra th&ocirc;ng b&aacute;o lỗi.</li> <li>Gi&uacute;p đảm bảo c&aacute;c đoạn m&atilde; được viết bằng JavaScript an to&agrave;n hơn.</li> </ul> <p>Tr&ecirc;n đ&acirc;y l&agrave; kh&aacute;i niệm v&agrave; v&iacute; dụ cơ bản về c&uacute; ph&aacute;p 'use strict' trong Javascript. Hy vọng mọi người c&oacute; thể &aacute;p dụng v&agrave;o trong chương tr&igrave;nh của m&igrave;nh. Mọi người h&atilde;y tiếp tục theo d&otilde;i c&aacute;c b&agrave;i tiếp theo v&agrave; cập nhật c&aacute;c b&agrave;i mới nhất tr&ecirc;n <a href="http://tek4.vn">tek4</a> nh&eacute;!</p> <p>P/s: Cảm ơn mọi người đ&atilde; tin tưởng tek4!</p>