Toán tử thay đổi tùy chọn sẽ tiếp tục đi xuống đường dẫn cho đến khi nó đạt đến giá trị thuộc tính hoặc gặp lỗi:
để nhân viên = {họ : 'John' ,
họ : 'Doe' ,
Tuổi tác : 3. 4
} ;
bàn điều khiển. khúc gỗ ( Nhân viên. địa chỉ ? . zip ) ;
Nếu chúng tôi đã cố gắng truy cập cùng một giá trị thuộc tính mà không sử dụng toán tử chuỗi tùy chọn thì chúng tôi sẽ nhận được lỗi:
để nhân viên = {
họ : 'John' ,
họ : 'Doe' ,
Tuổi tác : 3. 4
} ;
bàn điều khiển. khúc gỗ ( Nhân viên. địa chỉ . zip ) ;
Chuỗi tùy chọn trên cuộc gọi phương thức
Chuỗi tùy chọn cũng hoạt động trên các cuộc gọi phương thức. Bạn có thể sử dụng chuỗi tùy chọn khi bạn không chắc liệu một phương thức có tồn tại trong một đối tượng hay không. Một trường hợp sử dụng mẫu là dữ liệu được tìm nạp từ một API có thể chứa hoặc không chứa một số tính năng nhất định tùy thuộc vào thiết bị của người dùng:
để nhân viên = {
họ : 'John' ,
họ : 'Doe' ,
Tuổi tác : 3. 4
} ;
bàn điều khiển. khúc gỗ ( Nhân viên. phương pháp ? . ( ) ) ;
Không có chuỗi tùy chọn:
để nhân viên = {
họ : 'John' ,
họ : 'Doe' ,
Tuổi tác : 3. 4
} ;
bàn điều khiển. khúc gỗ ( Nhân viên. phương pháp ( ) ) ;
Toán tử chuỗi tùy chọn cũng có thể được sử dụng nhiều lần trong một câu lệnh duy nhất để tránh lỗi.
Kết hợp chuỗi tùy chọn với toán tử liên hợp Nullish
Chuỗi tùy chọn cũng có thể được ghép nối với ?? toán tử để cung cấp giá trị mặc định trong trường hợp thuộc tính hoặc phương thức không tồn tại:
để nhân viên = {họ : 'John' ,
họ : 'Doe' ,
Tuổi tác : 3. 4
} ;
bàn điều khiển. khúc gỗ ( Nhân viên. phương pháp ? . ( ) ?? 'Chức năng không tồn tại' ) ;
Giá trị mặc định cũng có thể là một số lệnh gọi hàm.
Lạm dụng quá mức chuỗi tùy chọn
Chuỗi tùy chọn đã được giới thiệu để tăng khả năng đọc và tính sang trọng của mã. Nó nên được sử dụng cẩn thận vì nó có thể dẫn đến lỗi im lặng. Việc lạm dụng toán tử chuỗi tùy chọn có thể gây ra sự cố trong mã của bạn.
Sự kết luận
Chuỗi tùy chọn là một tính năng mới được bổ sung gần đây của JavaScript có thể được sử dụng để truy cập các thuộc tính và phương thức bên trong các đối tượng JavaScript lồng nhau sâu mà không phải lo lắng về việc kiểm tra thủ công về sự tồn tại của các phương thức và thuộc tính đó.