Javascript评估问题

Oog*_*oga 5 javascript

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值,对吗?

谢谢你的帮助!

请注意,这些是我正在练习准备考试的书后面的额外问题,这些不是直接的作业问题.

Mat*_*hen 1

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。大括号不会创建新作用域。

您传递fg函数中(它成为形式参数h)。然后用x == 7g是一个具有自己作用域的函数,因此这x会影响全局)来调用它。

输入fx成为形参yy因此是 7。 (x + y) - 2那么 是10 + 7 - 2