javascript - 为什么变量语句被执行?

时间:2015-06-01 08:35:53

标签: javascript function

我正在学习javascript并尝试理解它的一些逻辑。  我读到变量就像一个盒子,一种存储和跟踪程序中信息的方式。

那为什么这段代码被执行了?

    var person = prompt("Please enter your name");

如果变量是一个只包含提示函数的框。那么调用此函数的方式和原因,您是否应该调用函数来调用它? 像

person();

如果是,那么分配给变量的任何函数都将被自调用 - 就像这个??

     var person = myFunc() { /*--code here--*/ };

5 个答案:

答案 0 :(得分:3)

由于您未传递提示功能,因此您调用提示功能并存储结果

另一个例子:

function add(a, b) { return a + b; }
var fivePlusThree = add(5, 3); // fivePlusThree === 8
var addFunction = add; //addFunction === add, I passed the function itself.
var onePlusOne = addFunction(1,1); // onePlusOne === 2

您可以将函数表达式传递给变量,使用person的示例就是这样。但是,调用该函数的结果必须保留在其他地方

var promptPerson = function() { return prompt("Please enter your name"); }
var name = promptPerson();

然而,与仅仅像第一个例子一样直接调用prompt并没有多大区别。

答案 1 :(得分:0)

prompt本身就是功能 ..就像您将return prompt函数的值分配给变量 person

答案 2 :(得分:0)

您执行返回prompt() javascript function。在这种情况下,对话框。

答案 3 :(得分:0)

调用该函数是因为您编写的语法意味着“将person的值设置为提示函数的结果”。如果要创建函数指针,请执行以下操作:

var person = function(){ prompt("Please enter your name");}

答案 4 :(得分:0)

评估=的右侧,并将评估的结果分配给左侧的变量。

因为prompt之后有()(它内部也有一些参数),评估调用函数,它是返回值将其分配给变量。

将函数分配给您将拥有的变量:

var person = prompt;

如果你想存储参数,那么你需要创建一个新函数。

var person = function () {
    prompt("Please enter your name");
};

var person = prompt.bind(this, "Please enter your name");
  

如果是,那么分配给变量的任何函数都将被自调用 - 就像这个??

 var person = function myFunc() { /*--code here--*/ };

该代码不涉及任何功能。

右侧是命名函数表达式。没有涉及函数调用。评估它的结果是一个功能。该功能已分配给person

要进行自我调用,你必须调用它。

 var person = function myFunc() { /*--code here--*/ }();

...在这种情况下,返回值将分配给person