亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

求助各位 JS函數顯示問題

求助各位 JS函數顯示問題

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

查看完整回答
反對 回復 2019-03-22
?
阿晨1998

TA貢獻2037條經驗 獲得超6個贊

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


查看完整回答
反對 回復 2019-03-22
?
隔江千里

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);

}


查看完整回答
反對 回復 2019-03-22
  • 3 回答
  • 0 關注
  • 808 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號