>  Q&A  >  본문

javascript - js에서 false를 반환하면 하향 실행을 막을 수 없는 이유

으아악

//첫 번째 false 반환이 유효합니다
//두 번째 false 반환이 유효하지 않습니다
이유는 무엇인가요

欧阳克欧阳克2686일 전3898

모든 응답(5)나는 대답할 것이다

  • 世界只因有你

    世界只因有你2017-06-12 09:23:55

    질문의 첫 번째 return false는 동기적으로 호출되므로 효과를 볼 수 있습니다.

    $.post 메서드는 비동기적으로 실행되기 때문에 $.post方法是异步执行的,因此在$.post方法的回调函数里面return false的时候,其实是生效了的,但是在执行这句代码的时候,$.post外面的代码早就执行完成了,所以看不到效果而已。另外,在回调函数里面加这句代码并没有什么意义,因为即使是return,也是退出当前执行的函数,即$.post的回调函数,并不能阻止$.post$.post 메서드의 콜백 함수 내부에 있을 때는 실제로 적용되지만, 이 코드를 실행하면 , $.post 외부의 코드가 이미 실행되었으므로 효과가 표시되지 않습니다. 게다가 이 코드를 콜백 함수에 추가하는 것은 의미가 없습니다. return조차도 현재 실행 중인 함수, 즉 $.post의 콜백 함수를 종료하고, $.post 외부의 코드 실행은 방지할 수 없습니다.

    $.post 메소드의 콜백 함수에 $.post请求成功之后执行的,那就把代码放到$.post方法的回调函数里面去吧。例如题主如果本意想让alert('1111')在请求成功后通过条件判断执行,那可以alert('11111')배치해야 하는 코드가 있는 경우

    여기서는 동기식과 비동기식을 주제로 설명하겠습니다. 예를 들어, 주제가 코드를 작성 중인데 목이 말라서 물을 끓여 마시러 갑니다. 이 과정에서 주체는 스레드와 동일합니다. 주체가 현재 실행 중인 작업은 목이 마르면 물을 끓여서 계속할 것입니다. 코드를 작성하려면 물이 익을 때까지 기다리면 됩니다. 일단 물을 꺼내서 직접 마시면 됩니다. 주제의 코드는 동일하며 js는 위에서 아래로 실행됩니다. 실행이 $.post就发送一个请求,请求的过程中外部的js还是继续执行(并没有等待$.post请求返回结果),等到ajax请求返回了,再回调之前定义的回调函数。这里除了$.post에 도달하면 비동기적으로 실행되고 나머지 코드는 동기적으로 실행됩니다.

    그리고, 질문의 정규 표현을 최적화할 수 있다는 것을 발견했습니다. 개인적으로 /^1[34578]d{9}$/g

    로 쓸 수 있다고 생각합니다.

    회신하다
    0
  • 漂亮男人

    漂亮男人2017-06-12 09:23:55

    Return은 현재 함수를 반환합니다. 첫 번째 반환은 클릭 이벤트의 콜백 함수이고, 두 번째 반환은 Ajax 요청의 콜백 함수입니다. 당연히 외부 함수 콜백을 방해하지 않습니다.

    회신하다
    0
  • 学习ing

    学习ing2017-06-12 09:23:55

    post의 함수는 비동기 함수이며 요청이 성공한 후에만 호출됩니다. 요청이 성공적으로 반환되기 전에 코드는 계속해서 아래쪽으로 실행됩니다. 따라서 return false 문은 유효하지 않습니다. 해결책은 $.post()의 비동기 함수가 아닌 비동기 함수 외부에 return false를 넣는 것입니다.

    회신하다
    0
  • 某草草

    某草草2017-06-12 09:23:55

    $.post 是异步执行的,需要使用 $.ajax 并设置 async: false

    회신하다
    0
  • 巴扎黑

    巴扎黑2017-06-12 09:23:55

    alert(1111)와 같은 레벨에 배치

    회신하다
    0
  • 취소회신하다