var x = 5;
function f(y){ return (x+y)-2 };
function g(h){ var x = 7; return h(x) };
{ var x=10; z=g(f) };
我正在解决课堂上教科书上的一些问题,为下一次考试做准备,但无法弄清楚上述内容如何评估。
大多数情况下,我不理解调用 z=g(f),因为当计算 f 时,没有提供参数,那么它是如何计算的呢?它怎么知道 y 是什么?
另外,就作用域而言,我相信 javascript 将大多数内容视为全局变量,因此设置的最后一个 x 将是函数 f 中使用的 x 值,对吗?
谢谢你的帮助!
请注意,这些是我为准备考试而练习的书后面的额外问题,这些不是直接的家庭作业问题。
大多数情况下,我不理解调用 z=g(f),因为当计算 f 时,没有提供参数,那么它是如何计算的呢?它怎么知道 y 是什么?
一步一步来吧。
Q:有什么作用g
do?
A:它接受另一个函数作为参数并使用该参数调用该函数7
.
Q:那么什么是g(f)
do?
A:它调用f
与论证7
,所以它相当于f(7)
.
注意写f
不带括号实际上并不call f
。在 JavaScript 中,函数可以像任何其他变量一样作为参数进行引用和传递。函数是一流的对象,您可以用它们做更多的事情而不仅仅是调用它们!
Q:结果是什么f(7)
?
A:返回语句是return (x+7)-2
。我们需要知道的价值x
.
Q:有什么价值x
inside f
?
A: x
这里指的是全局变量x
,其值为10
。重要的是,var x = 7
代替g
是局部变量,与全局变量不同。这var x = 7
来自函数的声明g
当我们考虑功能时是无关紧要的f
.
同样重要的是,声明var x = 5
and var x = 10
两者都指的是same全局变量。局部变量仅在函数内部引入。只需使用裸花括号并重复var
关键字确实not在 JavaScript 中引入一个新变量。这是一个棘手的问题,因为在其他语言(如 C++)中,这would引入一个新的范围和一个新的变量。在 JavaScript 中则不然。这var x = 10
可以(并且应该!)简单地写成x = 10
.
老实说,这是一个非常微妙和令人困惑的点。这让我想知道你的教科书是否真的打算测试你对这个想法的了解。这是相当神秘的。
Q:好吧...所以结果是f(7)
是什么?
A: It is (10+7)-2
, or 15.
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)