Cách sử dụng use strict trong JavaScript – https://final-blade.com

Đôi khi các bạn sẽ thấy một số file JavaScript có từ khóa “use strict” nhưng không biết nó là gì. Trong bài viết này hãy cùng mình tìm hiểu về use strict trong JavaScript nhé.

1. use strict trong JavaScript là gì?

Như bạn biết JavaScript là một ngôn ngữ lỏng lẻo, nhiều người than phiền rằng JavaScript quá lộn xộn. Nhưng kể từ phiên bản ECMAScript 5(ES5) đã giới thiệu chế độ use strict.

use strict dịch sang tiếng việt có nghĩa là chế độ nghiêm ngặt. Khi chế độ này được bật, JavaScript sẽ quản lý code của bạn nghiêm ngặt hơn về mặt cú pháp. Một ví dụ đơn giản khi bạn chưa khai báo một biến nhưng đã gán giá trị cho nó, Nếu thông thường thì code chúng ta vẫn chạy:

123

website=’ vi-magento.com ‘;

console.log(website);

/ / Kết quả : vi-magento.com

Nhưng nếu tất cả chúng ta bật sang chính sách khắt khe thì đoạn code trên sẽ báo lỗi ngay :

1234

‘ use strict ‘;

website=’ vi-magento.com ‘;

console.log(website);

/ / Kết quả : Uncaught ReferenceError : website is not defined

Sẽ có thông tin lỗi ở màn hình hiển thị console :
bật chế độ nghiêm ngặt use strict
Để chúng hoạt động giải trí đúng cách ở chính sách này những bạn cần khai báo biến trươc khi gán giá trị cho chúng bằng var, let hoặc const .

1234

‘ use strict ‘;

varwebsite=’ vi-magento.com ‘;

console.log(website);

/ / Kết quả : vi-magento.com

2. Cách sử dụng use strict trong JavaScript và phạm vi của use strict

Để bật chế độ nghiêm ngặt trong JavaScript bạn chỉ cần thêm từ khóa “use strict“; vào đầu tập lệnh. Những đoạn code bên dưới use strict sẽ được áp dụng chế độ nghiêm ngặt về cú pháp.

Trong trường hợp này strict mode sẽ có công dụng cho hàng loạt file ( toàn cục ) .

123

‘ use strict ‘;

varwebsite=’ vi-magento ‘;

/ / code

Hoặc bạn cũng có thể sử dụng cho một phạm vi cụ thể như một hàm. Trong trường hợp này bạn có thể đặt use strict ở đầu hàm. Khi đó use strict chỉ có tác dụng cho hàm này thôi (phạm vi cục bộ).

12345678

functiongetWebsite(){

‘ use strict ‘;/ / use strict chỉ có công dụng trong hàm getWebsite

varwebsite=’ vi-magento ‘;

console.log(website);

}

getWebsite();

outsite=’ Ngoài khoanh vùng phạm vi của use strict ‘;

console.log(outsite);

3. Một số trường hợp không sử dụng được nếu bật strict mode

JavaScript là một ngôn ngữ lỏng lẻo nên nếu trong một dự án lớn đòi hỏi code phải được quản lý nghiêm ngặt hơn để tránh các lỗi tiềm tàng về sau. Và sau đây là một số trường hợp sẽ xảy ra lỗi nếu bạn sử dụng use strict trong JavaScript:

3.1. Gán giá trị cho biến chưa được khai báo

Nếu không sử dụng strict mode thì bạn có thể vô tư với điều này, nhưng khi bật chế độ combat à không chế độ strict mode lên thì bạn không được gán giá trị cho một biến chưa khai báo:

Ví dụ :
Trong chính sách mặc định, làm thế này thì vô tư :

12

message=” Học lập trình JavaScript cơ bản “;

document.write(message);

Nhưng khi bật strict mode thì lại không được :

1234

/ / Không được làm thế này

” use strict “;

message=” Học lập trình JavaScript cơ bản “;

document.write(message);

Đoạn code trên sẽ báo lỗi và không thực thi tiếp.

Để không bị lỗi, bạn phải khai báo biến rõ ràng với từ khóa letvarconst

123

” use strict “;

/ / Khai báo biến rõ ràng với từ khóa

letmessage=” Học lập trình JavaScript cơ bản ! “;

Và cả so với đối tượng người tiêu dùng .

1234567

” use strict “;

/ / Chưa khai báo đối tượng người dùng. Chưa được phép sử dụng

/ / như thế này

x={

tenThuongHieu:” vi-magento “,

namThanhLap:2020

};

Bạn chưa khai báo thì chưa được phép gán giá trị cho chúng .

3.2. Báo lỗi khi sử dụng delete

Khi bật chế độ strict mode lên thì bạn không thể sử dụng từ khóa delete để xóa các hàm hay biến.

12345

” use strict “;

/ / Khai báo biến rõ ràng với từ khóa

letmessage=” Học lập trình JavaScript cơ bản ! “;

/ / Sai vì không được delete

deletemessage;

3.3. Các tham số của hàm không được trùng nhau

Ở chính sách strict mode bạn sẽ không đươc khai báo những tham số trùng với nhau. Nó chửi đấy !

12345

” use strict “;

/ / Sai vì tham số message bị trùng

functionprint_message(message,message){

document.write(” Lập trình JavaScript cơ bản “);

}

3.4. Không cho phép khai báo biến dưới dạng hệ nhị phân

Các số khi khai báo biến dưới dạng nhị phân hay nói cách khác là có tiền tố 0 phía trước sẽ không được đồng ý trong chính sách này .

123

” use strict “;

letnumber=01010;

/ / Uncaught SyntaxError : Octal literals are not allowed in strict mode .

3.5. Không đươc phép ghi đè lên thuộc tính chỉ đươc phép đọc

Khi đã nói thuộc tính chỉ đọc thì chỉ được đọc, không được ghi đè .

123456789

” use strict “;

letobj_demo={};

Object.defineProperty(obj_demo,” ver “,{

value:1,

writable:false,

});

/ / Cố ghi đè lên thuộc tính chỉ đọc

obj_demo.ver=10;

// Uncaught TypeError: Cannot assign to read only property ‘ver’ of object ‘#

3.6. Không được sử dụng with

Từ khóa with cũng không được sử dụng trong chế độ strict mode.

1234567

” use strict “;

letone=1;

lettwo=2;

with(one){

document.write(one);

}

/ / Uncaught SyntaxError : Strict mode code may not include a with statement

3.7. Không cho phép khai báo biến bên trong eval()

Trong chế độ nghiêm ngặt này không cho phép khai báo biến bên trong eval() vì lý do bảo mật.

1234

” use strict “;

eval(” let x = 17 “);

document.write(x);

/ / Uncaught ReferenceError : x is not defined

3.8. Không chấp nhận khai báo biến bằng tên keyword ở phiên bản cao hơn

Ở chế độ strict mode sẽ không cho phép bạn sử dụng các từ khóa sau để khai báo biến, hằng hay đặt tên cho hàm được sử dụng ở các phiên bản cao hơn (trong tương lai) như: implementsinterfaceletpackageprivateprotectedpublicstatic và yield.

3.9. Hành vi khác của từ khóa this

Từ khóa this là một trường hợp có hành vi khá là khó nắm bắt trong JavaScript (nếu bạn là người mới học hay kể cả những người có kinh nghiệm)

Chính do đó, với tiềm năng làm cho code khắt khe hơn .

Hành vi của từ khóa this cũng là một thứ được trọng tâm điều chỉnh trong strict mode.

Từ khóa this đề cập đến đối tượng được gọi là hàm.

Nếu đối tượng không được chỉ định, các hàm ở chế độ nghiêm ngặt sẽ trả về undefined

12345

” use strict “;

functionmyFunction(){

console.log(this);/ / Kêt quả : undefined

}

myFunction();

Và các hàm ở chế độ bình thường sẽ trả về đối tượng toàn cục (Window)

1234

functionmyFunction(){

console.log(this);/ / Kêt quả : Window

}

myFunction

(

);

Kết luận

Tổng hợp lại một số điểm chính đáng chú ý về cách sử dụng use strict trong JavaScript vừa tìm hiểu trong bài viết này nhé:

  • Bật chế độ nghiêm ngặt bằng cách thêm từ khóa “use strict” ở đầu file(toàn cục) hoặc ở đầu hàm(cục bộ).
  • Khi thêm use strict trong một tập lệnh thì các đoạn code bên dưới use strict sẽ được JavaScript quản lý chặt chẽ hơn về mặt cú pháp.