Tại sao code javascript này luôn ra false?

mọi người cho em hỏi là tại sao nó chỉ ra mỗi false vậy ạ.

function has(array, value) {
 for (var i=0; i<array.length; i++){
     if (array[i]===value){
        return true;
     }
     else return false;
 }

}

Tại sao if có dấu sừng trâu mà đến else lại bỏ mất cặp dấu sừng trâu? Điều này có khác gì một chuỗi mà mở đầu chuỗi là nháy đơn, đóng chuỗi là nháy kép hoặc ngược lại?

Bạn thử ví dụ bằng giá trị thực tế xem mảng bạn chứa gì, giá trị bạn cho là gì để người ta chạy thử xem. Bạn sử dụng trình duyệt hay công cụ gì để chạy JavaScript? JavaScript của bạn version bao nhiêu?

4 Likes

Em thêm dấu ở else mà vẫn ko được ạ.


In và output kia ạ.
Em học trên coderX nên chạy bằng trang Repl.it ạ.

Do code của bạn chỉ xét mỗi phần tử đầu tiên thôi nhé. Ban đầu i = 0, nếu bằng value thì return true, còn lại return false, kiểu gì cũng thấy return ngay từ lần xét đầu tiên rồi còn đâu.
Bạn thử suy nghĩ kĩ lại luồng chạy của code, xem nó phải như thế nào thì mới ra được kết quả là true, là false rồi bạn sẽ tự hiểu.

6 Likes

Gặp return là tự động thoát hàm rồi, mấy cái dưới nó dù là gì thì cũng bị bơ (không chạy) hết. Ví dụ:

function foo(){
    return true
    thrown new Error("Gặp lỗi rồi nha 😎") //Đã bị bơ.
}
5 Likes

dạ vâng em cảm ơn ạ!

dạ em hiểu rồi ạ, em cảm anh ơn anh!

theo yeu cau de bai thi code nen la nhu the nay

function has(array, value) {
	var check = false;
	for (var i=0; i<array.length; i++){
	    if (array[i]===value){
	        check = true;
	        break;
	    }
	}
	return check;
}
3 Likes
83% thành viên diễn đàn không hỏi bài tập, còn bạn thì sao?