在线观看不卡亚洲电影_亚洲妓女99综合网_91青青青亚洲娱乐在线观看_日韩无码高清综合久久

鍍金池/ 問答/HTML/ 求助各位 JS函數(shù)顯示問題

求助各位 JS函數(shù)顯示問題

var A = function(num) {
     return num++;
}

var num = 2;
var b = A(num);
console.log(b);

var A = function(num) {
    return (num + 2);
}

這個函數(shù)很簡單 答案應該是4,但是在我的瀏覽器上顯示的卻是2 ;
無論是chrome還是ie還是edge
而且在node上顯示的也是2;
在ubantu上顯示正常 答案是4
如果把實參那里放到兩個函數(shù)后面 結果顯示的就是4
求助各位大佬
這是為什么啊

回答
編輯回答
枕頭人

嚴格意義上來說,javascript沒有多線程的概念,所有的程序都是單線程依次執(zhí)行的。
你可以順序不要變,先讓頁面加載完成后再輸出一下,加一個定時器,一看就明白了。
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);

}

2018年4月13日 20:22
編輯回答
心癌

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

2018年4月5日 06:33
編輯回答
憶當年

順序執(zhí)行答案肯定是2啊。ubuntu上是4,你確定你用的是js或者nodejs?難道還有先編譯再運行的js編譯器?不可能會得到4啊

2017年11月30日 01:04