PDA

View Full Version : console.log vs (document.write || other)



Gold_cpp
شنبه 10 تیر 1391, 09:49 صبح
سلام دوستان
در مورد نحوی خروجی قطعه کد که توی کامنت هست با کد که اجرا میشه توضیح میخواستم !؟

چرا نتایج توی document و console با هم فرق میکنند ؟؟


<html>
<head>
<title>slide show</title>
</head>
<body>
<script type="text/javascript">
var myarray = new Array(0,1,2,3,4,5,6,7,8,9);

/* correct
myarray.shift(myarray.push(myarray[0]));
document.write(myarray+'<br>');

myarray.shift(myarray.push(myarray[0]));
document.write(myarray+'<br>');

myarray.shift(myarray.push(myarray[0]));
document.write(myarray+'<br>');

myarray.shift(myarray.push(myarray[0]));
document.write(myarray);
*/
/* :-? */
myarray.shift(myarray.push(myarray[0]));
console.log(myarray);

myarray.shift(myarray.push(myarray[0]));
console.log(myarray);

myarray.shift(myarray.push(myarray[0]));
console.log(myarray);

myarray.shift(myarray.push(myarray[0]));
console.log(myarray);


</script>
</body>
</html>

mehdi.mousavi
شنبه 10 تیر 1391, 23:21 عصر
سلام.
نتایج document.write و console.log در مثالی که زده اید هیچ تفاوتی با هم نمیکنه و هر دو خروجی یکسانی رو تولید میکنه:


1,2,3,4,5,6,7,8,9,0
2,3,4,5,6,7,8,9,0,1
3,4,5,6,7,8,9,0,1,2
4,5,6,7,8,9,0,1,2,3

شاید شما هر دو کد رو پشت سر هم اجرا می کنید، یعنی اول document.write اجرا میشه، بعدش که console.log اجرا میشه array دیگه shift پیدا کرده و طبیعتا خروجی، متفاوت از اعداد فوق خواهد بود.

موفق باشید.

Gold_cpp
یک شنبه 11 تیر 1391, 05:43 صبح
سلام و ممنون از پاسختون

برای من توی محیط کنسول این طوری نشون میده !!

من پشت سر هم اجرا نمیکنم اون رو توی کامنت گذاشتم که دوستان منظورمو بهتر بگیرین !

mehdi.mousavi
دوشنبه 12 تیر 1391, 11:48 صبح
سلام.
قبل از هر چیز، من اصلا حواسم به این موضوع نبود که shift پارامتر ورودی نداره! ثانیا، حدس میزنم که Google Chrome هنگام ثبت خروجی در Console داره چیزی رو Optimize میکنه که منجر به اون خروجی میشه. من کد رو قدری تغییر دادم و خروجی همون خروجی ای شد که در پست اولم دادم:

var myarray = new Array(0,1,2,3,4,5,6,7,8,9);
myarray.push(myarray[0]);
myarray.shift();
console.log('step1: ' + myarray);

myarray.push(myarray[0]);
myarray.shift();
console.log('step2: ' + myarray);

myarray.push(myarray[0]);
myarray.shift();
console.log('step3: ' + myarray);

myarray.push(myarray[0]);
myarray.shift();
console.log('step4: ' + myarray);

در اولین فرصت دقیق بررسی می کنم ببینم چرا Console در Chrome بدین شکل کار میکنه و نتیجه رو در همین تاپیک اعلام خواهم کرد.

موفق باشید.