我正在学习javascript并尝试理解它的一些逻辑。 我读到变量就像一个盒子,一种存储和跟踪程序中信息的方式。
那为什么这段代码被执行了?
var person = prompt("Please enter your name");
如果变量是一个只包含提示函数的框。那么调用此函数的方式和原因,您是否应该调用函数来调用它? 像
person();
如果是,那么分配给变量的任何函数都将被自调用 - 就像这个??
var person = myFunc() { /*--code here--*/ };
答案 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
。