为了账号安全,请及时绑定邮箱和手机立即绑定

求助各位 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 关注
  • 982 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号