为什么以下javascript代码以它的方式运行?
var plusOne = function(num){
return num+1;
};
var total=plusOne(1);
console.log(total);
var total2=plusOne(3);
console.log(total2);
如果我是对的
var total=plusOne(1);
console.log(total);
将值2
返回给变量total
和变量plusOne
,变量plusOne
然后会记录到控制台" 2",但是如果值{ {1}}现在是2
而不是
var total2=plusOne(3);
console.log(total2);
返回值为4,因为它不是实际执行的实际代码
var total2=2(3);
console.log(total2);
答案 0 :(得分:1)
没有
Javascript无法正常工作。实际上,我想不出任何以这种方式运行的编程语言。 plusOne
只是指向函数的指针。
执行第一行时,2
值存储在total
中,但plusOne
没有任何反应。
当你执行第二行时,Javascript并不关心该函数是否被称为eariler。
答案 1 :(得分:0)
plusOne
是对函数的引用。它只引用函数,不存储它返回的值。每次调用plusOne
引用的函数都与先前对函数的调用无关。
代码在功能上等同于:
function plusOne(num){
return num+1;
};
var total=plusOne(1);
console.log(total);
var total2=plusOne(3);
console.log(total2);
答案 2 :(得分:0)
plusOne甚至没有分配第一次计算的值。 plusOne在那里或没有在那里没有任何意义。 总计被赋值为2。 因此,第一次打印将是2,第二次打印必须是4,因为在下一次函数调用期间传入3。
答案 3 :(得分:0)
plusOne是类型函数而不是数字 总数是一个数字 因此,plusOne不会引用数字,而是引用函数本身。
http://tech.deepumohan.com/2013/07/javascript-pass-function-as-parameter.html
答案 4 :(得分:0)
你已经声明了一个名为plusOne()的函数,它接受一个参数:即调用函数时提供的数字。 plusOne()虽然被指定为变量指向内存中的一个存储桶,它将返回1 +作为参数传递的数字。它不会存储先前对函数参数的调用。
在javascript中有多种方式声明函数:read this for reference
答案 5 :(得分:0)
所以这是一个示例,说明在某些更改期间发生的原因和结果。按照此JSFiddle链接,单击“运行”并阅读注释。 http://jsfiddle.net/pGcrL/
以下是您在链接中找到的js小提琴代码。
var plusOne = function(num){
return num+1;
};
$('#tempconsoleoutput').html(typeof plusOne);
//Since plusOne is a function you can not make it a variable.
//You must say something like plusOne = plusOne(1);
plusOne = plusOne(1);
$('#tempconsoleoutput2').html(typeof plusOne);
var total=plusOne(1);//With the plusOne now being a number
//you will find that there is an exception in your console now.
console.log(total);
var total2=plusOne(3);
console.log(total2);