자바 스크립트 프로그램을 작성하고 Chrome 7에서 실행 중입니다. 일부 이상한 동작이 발생했습니다. 자, 코드 내에서, 다른 모든 것들이 계속 진행되면서, 그것이 나라는 것을 알기까지 어느 정도 시간이 걸렸습니다.변수가 변경되기 전에이 Chrome V8 동작을 설명 할 수 있습니까?
나는 아래 코드의 핵심을 증류했습니다.
Printing before:
[1000, 2000, 3000, 4000, 5000]
------------------------
Printing after:
[1000, 2000, 3000, 4000, 5000]
방법은 첫 번째 통화는 data_copy의 변경된 버전 인쇄 CONSOLE.LOG에 와서 :이 크롬 7에서 실행하면
<html>
<script>
var data = [1,2,3,4,5];
var data_copy = [];
for (var i=0; i<data.length; i++){
data_copy.push(data[i]);
}
console.log("Printing before:");
console.log(data_copy);
//alert(data_copy);
console.log("------------------------");
for (var i=0; i<data_copy.length; i++){
data_copy[i] = data_copy[i] * 1000;
}
console.log("Printing after:");
console.log(data_copy);
</script>
</html>
, 나는 자바 스크립트 콘솔에서 다음과 출력을 얻을? 나는 또한 Node.js를의 코드를 시도
Printing before:
[1, 2, 3, 4, 5]
------------------------
Printing after:
[1000, 2000, 3000, 4000, 5000]
나는 정상 (두 번째 얻을 : 나는 "경고"의 주석과 같은 코드를 실행하면
지금, 나는 당신이 일반적으로 기대하는 것을 얻을) 출력.
아이디어가 있으십니까?
일부 JIT 최적화가 잘못 되었습니까?
아니면 확실하지 않은 것이 있습니까?
브라우저가 변경된 후에 비동기 적으로 호출하도록 호출하는 것 같습니다. 그런데 왜 그렇게할까요? – Hejazzman