为什么javascript函数每次运行?

时间:2014-01-03 20:20:07

标签: javascript

为什么以下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);

6 个答案:

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