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
提交
取消
