HUWWW
2019-03-12 10:15:19
var A = function(num) { return num++;}var num = 2;var b = A(num);console.log(b);var A = function(num) { return (num + 2);}這個函數很簡單 答案應該是4,但是在我的瀏覽器上顯示的卻是2 ;無論是chrome還是ie還是edge而且在node上顯示的也是2;在ubantu上顯示正常 答案是4如果把實參那里放到兩個函數后面 結果顯示的就是4求助各位大佬 這是為什么啊
3 回答

慕姐4208626
TA貢獻1852條經驗 獲得超7個贊
這個里面有兩個知識點。 return num++; 和 return ++ num 返回的結果是不一樣的,前者是先返回結果再加1,后者是先加1,再把加1后的結果返回。
第二是js的變量提升問題。只有直接定義的函數(function ss() {})才會提升, 用變量等于這個函數,這種方式不會聲明提前。
本期當執行A方法時,此時A還是function(num) {return num++;} 。所以結果為2

隔江千里
TA貢獻1906條經驗 獲得超10個贊
嚴格意義上來說,javascript沒有多線程的概念,所有的程序都是單線程依次執行的。
你可以順序不要變,先讓頁面加載完成后再輸出一下,加一個定時器,一看就明白了。
var num = 2;
var b;
setTimeout(function(){
b = A(num);
},900)
setTimeout(function(){
console.log(b); //輸出:4
},1000)
var A = function(nums) {
return (nums + 2);
}
添加回答
舉報
0/150
提交
取消