Hướng dẫn javascript return in while loop - javascript trở lại trong vòng lặp while

var i = 0;
while[i < 100]{
   return "The number is " + i;
   i++;
}

Có gì sai với tuyên bố trả lại của tôi? Tại sao tôi có thể trả về một chuỗi cộng với một biến?

Hỏi ngày 23 tháng 8 năm 2015 lúc 20:03Aug 23, 2015 at 20:03

5

return có nghĩa là kết thúc chức năng và trả về một số giá trị. Bất kỳ tuyên bố nào sau tuyên bố trả lại sẽ không được thực thi và việc thực thi hàm sẽ chấm dứt tại câu lệnh trả về. Vì vậy, return trong trường hợp của bạn sẽ làm cho vòng lặp chỉ thực thi một và chấm dứt nó.

Đã trả lời ngày 23 tháng 8 năm 2015 lúc 20:13Aug 23, 2015 at 20:13

Trước hết mã của bạn phải ở trong một chức năng. Thứ hai, câu lệnh trả về mà bạn đã viết bên trong vòng lặp cho vòng lặp sẽ chỉ thực hiện kết quả một lần và nó sẽ ra khỏi toàn bộ chức năng.

Đã trả lời ngày 23 tháng 8 năm 2015 lúc 20:10Aug 23, 2015 at 20:10

Srinivasulu Raosrinivasulu RaoSrinivasulu Rao

3011 Huy hiệu vàng3 Huy hiệu bạc12 Huy hiệu đồng1 gold badge3 silver badges12 bronze badges

Tôi không chắc chắn chính xác những gì bạn muốn làm với văn bản này, nhưng return sẽ đưa bạn ra khỏi chức năng. Nếu bạn muốn hiển thị văn bản này, bạn có thể sử dụng

var i = 0;
while[i < 100]{
    document.getElementById["demo"].innerHTML += "

The number is " + i + "

"; i++; }
1 và sau đó sử dụng chức năng để tạo văn bản bên trong nó như thế này:

var i = 0;
while[i < 100]{
    document.getElementById["demo"].innerHTML += "

The number is " + i + "

"; i++; }

//jsfiddle.net/rmerzbacher/fdu7aauz/

Đã trả lời ngày 23 tháng 8 năm 2015 lúc 21:13Aug 23, 2015 at 21:13

Reidmreidmreidm

193 huy hiệu đồng3 bronze badges

Tôi đã viết một vòng lặp thời gian và ban đầu chức năng là trả lại một chuỗi, nhưng điều đó không hoạt động. Tôi đã quay lại và thay đổi hàm trả về thành một bảng điều khiển hoặc chức năng nhắc nhở, và điều đó hoạt động tốt. Tại sao tôi có thể sử dụng chức năng trả lại?

Đây là mã của tôi không hoạt động [không chắc tại sao]:

// Write your loop below!
var anyVariable = true
while [anyVariable]
{return["I am amazing"];
anyVariable = false;
}

Và mã này hoạt động tốt:

// Write your loop below!
var anyVariable = true
while [anyVariable]
{prompt["I am amazing"];
anyVariable = false;
}

Trong một số trường hợp, có thể có ý nghĩa khi sử dụng một bài tập làm điều kiện-nhưng khi bạn làm, có một cú pháp thực hành tốt nhất mà bạn nên biết và làm theo.

Hãy xem xét ví dụ sau, lặp lại các nhận xét của tài liệu, đăng nhập chúng vào bảng điều khiển.

const iterator = document.createNodeIterator[
  document,
  NodeFilter.SHOW_COMMENT,
];
let currentNode;
while [currentNode = iterator.nextNode[]] {
  console.log[currentNode.textContent.trim[]];
}

Đó không phải là một ví dụ thực hành tốt, do dòng sau đây cụ thể:

while [currentNode = iterator.nextNode[]] {

Hiệu ứng của dòng đó là tốt - trong đó, mỗi lần tìm thấy một nút bình luận:

  1. var i = 0;
    while[i < 100]{
        document.getElementById["demo"].innerHTML += "

    The number is " + i + "

    "; i++; }
    2 Trả về nút bình luận đó, được gán cho
    var i = 0;
    while[i < 100]{
        document.getElementById["demo"].innerHTML += "

    The number is " + i + "

    "; i++; }
    3.
  2. Do đó, giá trị của
    var i = 0;
    while[i < 100]{
        document.getElementById["demo"].innerHTML += "

    The number is " + i + "

    "; i++; }
    4 là sự thật.
  3. Vì vậy, cuộc gọi
    var i = 0;
    while[i < 100]{
        document.getElementById["demo"].innerHTML += "

    The number is " + i + "

    "; i++; }
    5 thực thi và vòng lặp tiếp tục.

Sau đó, khi không còn các nút bình luận nào trong tài liệu:

  1. var i = 0;
    while[i < 100]{
        document.getElementById["demo"].innerHTML += "

    The number is " + i + "

    "; i++; }
    2 Trả về null.
  2. Do đó, giá trị của
    var i = 0;
    while[i < 100]{
        document.getElementById["demo"].innerHTML += "

    The number is " + i + "

    "; i++; }
    4 cũng là
    var i = 0;
    while[i < 100]{
        document.getElementById["demo"].innerHTML += "

    The number is " + i + "

    "; i++; }
    8, đó là giả.
  3. Vì vậy, vòng lặp kết thúc.

Nhưng mặc dù mã hoạt động như mong đợi, vấn đề với dòng cụ thể đó là: Các điều kiện thường sử dụng các toán tử so sánh như

var i = 0;
while[i < 100]{
    document.getElementById["demo"].innerHTML += "

The number is " + i + "

"; i++; }
9, nhưng
// Write your loop below!
var anyVariable = true
while [anyVariable]
{return["I am amazing"];
anyVariable = false;
}
0 trong dòng đó không phải là toán tử so sánh - thay vào đó, đó là toán tử gán. Vì vậy,
// Write your loop below!
var anyVariable = true
while [anyVariable]
{return["I am amazing"];
anyVariable = false;
}
0 có vẻ như đó là một lỗi đánh máy cho
var i = 0;
while[i < 100]{
    document.getElementById["demo"].innerHTML += "

The number is " + i + "

"; i++; }
9 - mặc dù nó thực sự không phải là một lỗi đánh máy.

Do đó, trong các trường hợp như thế, một số IDE và các công cụ in mã như Eslint và JShint-để giúp bạn bắt được một lỗi đánh máy có thể để bạn có thể sửa nó-sẽ báo cáo một cảnh báo như sau:

Dự kiến ​​một biểu thức có điều kiện và thay vào đó thấy một bài tập.

Nhưng có một cách thực hành tốt nhất để tránh cảnh báo đó: làm cho mã được thể hiện rõ hơn cho thấy nó dự định điều kiện là liệu giá trị của bài tập

var i = 0;
while[i < 100]{
    document.getElementById["demo"].innerHTML += "

The number is " + i + "

"; i++; }
4 có phải là sự thật hay không. Và bạn làm điều đó một cách tối thiểu bằng cách đặt các dấu ngoặc đơn bổ sung làm toán tử nhóm xung quanh nhiệm vụ:

const iterator = document.createNodeIterator[
  document, NodeFilter.SHOW_COMMENT];
let currentNode;
while [[currentNode = iterator.nextNode[]]] {
  console.log[currentNode.textContent.trim[]];
}

Nhưng thực tế thực sự tốt nhất là tiến thêm một bước và làm cho mã rõ ràng hơn - bằng cách thêm một toán tử so sánh để biến điều kiện thành một so sánh rõ ràng:

const iterator = document.createNodeIterator[
  document, NodeFilter.SHOW_COMMENT];
let currentNode;
while [[currentNode = iterator.nextNode[]] !== null] {
  console.log[currentNode.textContent.trim[]];
}

Cùng với việc ngăn chặn bất kỳ cảnh báo nào trong IDE và các công cụ in mã, những gì mã đó thực sự đang làm sẽ rõ ràng hơn nhiều đối với bất kỳ ai đi cùng sau này, những người cần đọc và hiểu nó hoặc sửa đổi nó.

Bạn có thể trở lại trong một vòng lặp JS không?

Có một câu lệnh trả về trực tiếp trong vòng một vòng sẽ chỉ dẫn đến một lần lặp được thực thi. [Nó làm cho vòng lặp của bạn trở nên vô dụng].. [It makes your loop useless].

Return có phá vỡ một vòng lặp JavaScript không?

Câu hỏi: "Có trả lại một vòng lặp trong một thời gian trong JavaScript?" Trả lời: Có, Trả về luôn dừng thực thi và thoát khỏi chức năng.Yes, return always stops execution and exits the function.

Bài Viết Liên Quan

Chủ Đề