2013-08-05 20 views
8

Tôi có một toán tử bậc ba dir === 'next' ? ++$currentSlide : --$currentSlide; trong JS của tôi được sử dụng để tăng số nguyên. khi tôi chạy kịch bản của tôi trong JSHint grunt hightlights dòng này là Expected an assignment or function call and instead saw an expression.Lỗi hiển thị toán tử bậc ba trong JSHint - Dự kiến ​​một cuộc gọi hàm hoặc nhiệm vụ và thay vào đó đã thấy biểu thức

Bất cứ ai có thể tư vấn cho tôi nơi tôi sẽ sai với điều này? Tôi có nên thiết lập tình trạng của tôi lên một cách khác nhau không?

Trả lời

16

Bạn đang lạm dụng các nhà điều hành có điều kiện như một tuyên bố if, đó là lý do tại sao bạn đang nhận được lưu ý rằng. Các công việc thực sự trong mã được thực hiện như là một tác dụng phụ của biểu thức, và kết quả của biểu thức được bỏ qua.

Là một if tuyên bố thực, nó sẽ là:

if (dir === 'next') { 
    ++$currentSlide; 
} else { 
    --$currentSlide; 
} 

Bạn có thể sử dụng toán tử điều kiện nếu bạn sử dụng nó như là một biểu thực tế:

$currentSlide += dir === 'next' ? 1 : -1; 
+4

* Shudder * ở phần sau. –

+1

Bạn sẽ không nhận được cảnh báo tương tự cho '++ x;' trên một dòng của chính nó? – sje397

+3

@DaveNewton: '$ currentSlide + = dir === 'next' || -1; ':-) – Bergi

3

Nó có vượt qua nếu bạn viết nó như thế này không?

$currentSlide = (dir === 'next' ? $currentSlide + 1 : $currentSlide - 1); 

Linters và gợi ý thường không thích/giảm vì chúng nhạy cảm với lỗi.

0

Hãy thử cú pháp sau:

$currentSlide = (dir === 'next' ? $currentSlide+1 : $currentSlide-1); 
7

Nói chung, đối với việc vô hiệu hóa ' Dự kiến ​​một cuộc gọi hàm hoặc nhiệm vụ và thay vào đó sẽ thấy một biểu thức. ' cảnh báo, bạn có thể thực hiện/* jshint expr: true */

Các vấn đề liên quan