Helpex - Trao đổi & giúp đỡ Đăng nhập
6

Tôi tình cờ gặp đoạn mã này:

<a  ng-click= "item.statusId !== itemStatus.in || transfer()">

Tôi đoán chúng ta có thể khái quát như sau:

<element ng-click = "someVar !== someValue || doStuff()">

Sau đó, tôi tìm thấy bài báo này về ngắn mạch và một bài khác tập trung hơn khi tôi biết chúng được gọi là gì. Tuy nhiên, tôi vẫn không hiểu.

Về cơ bản nó có hoạt động dựa trên nguyên tắc đánh giá kết thúc câu lệnh OR nếu câu lệnh đầu tiên đánh giá là true không? Vì vậy, nếu câu lệnh đầu tiên là đúng, hãy kết thúc đánh giá, nếu nó sai, hãy chạy hàm trong nửa sau của câu lệnh OR? (Đây là câu hỏi chính mà tôi đang hỏi, mọi thứ khác là phụ).

Tôi đoán rằng phần mà tôi không nhận được là liệu trình biên dịch có diễn giải mã này theo cách khác hay không hay nó vẫn đánh giá là false và chỉ chạy chức năng. Thậm chí không chắc làm thế nào để cụm từ Q.

6 hữu ích 0 bình luận 1.3k xem chia sẻ
4

Về cơ bản nó có hoạt động dựa trên nguyên tắc đánh giá kết thúc câu lệnh OR nếu câu lệnh đầu tiên đánh giá là true không? Vì vậy, nếu câu lệnh đầu tiên là đúng, hãy kết thúc đánh giá, nếu nó sai, hãy chạy hàm trong nửa sau của câu lệnh OR?

Nó viết tắt hiệu quả cho câu lệnh if và bạn đã trực giác chính xác tại sao nó hoạt động. Để biết thêm chi tiết về đánh giá ngắn mạch trong JavaScript, hãy xem câu hỏi Stack Overflow này .

4 hữu ích 3 bình luận chia sẻ
1

Mã đó tương đương với:

//Note the intentional and explicit use of `== false` to mean falsy (NOT `=== false` to indicate strict equality test for false)
if( (item.statusId !== itemStatus.in) == false ) {
 transfer();
}

Nó là một phương tiện thú vị để thực thi một hàm chỉ khi một điều kiện là sai.

Có rất nhiều khác nhau ví dụ của này khoảng trên StackOverflow, và không phải là cụ thể cho AngularJS.

1 hữu ích 0 bình luận chia sẻ
loading
Không tìm thấy câu trả lời bạn tìm kiếm? Duyệt qua các câu hỏi được gắn thẻ javascript angularjs , hoặc hỏi câu hỏi của bạn.

Có thể bạn quan tâm

loading