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) };
Run Code Online (Sandbox Code Playgroud)
我正在从课堂上的教科书中解决一些问题,为下一次考试做准备,并且无法弄清楚上面的评估方式.
大多数情况下,我不理解调用z = g(f),因为当评估f时,它没有提供参数,那么它是如何评估的呢?怎么知道你是什么?
此外,就范围而言,我相信javascript将大多数内容视为全局变量,因此设置的最后一个x将是函数f中使用的x值,对吗?
谢谢你的帮助!
请注意,这些是我正在练习准备考试的书后面的额外问题,这些不是直接的作业问题.
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) };
Run Code Online (Sandbox Code Playgroud)
这会将全局 x 设置为 5,然后(在任何函数调用之前)设置为 10。大括号不会创建新作用域。
您传递f到g函数中(它成为形式参数h)。然后用x == 7(g是一个具有自己作用域的函数,因此这x会影响全局)来调用它。
输入f,x成为形参y;y因此是 7。 (x + y) - 2那么 是10 + 7 - 2。
| 归档时间: |
|
| 查看次数: |
916 次 |
| 最近记录: |