gpt4 book ai didi

Javascript 评估问题

转载 作者:搜寻专家 更新时间:2023-11-01 04:11:34 25 4
gpt4 key购买 nike

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

感谢您的帮助!

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

最佳答案

Mostly, I don't understand the call z=g(f), as when f is evaluated, it isn't provided an argument, so how does it evaluate at all? How does it know what y is?

一步一步来。

问:函数g有什么作用?
A: 它将另一个函数作为参数,并使用参数 7 调用该函数。

问:那么g(f)有什么作用?
A: 它以参数7 调用f,所以它等同于f(7)

请注意,编写不带括号的 f 实际上不会调用 f。在 JavaScript 中,函数可以像任何其他变量一样作为参数被引用和传递。函数是一流的对象,您可以用它们做更多的事情,而不仅仅是调用它们!

问:f(7)的结果是什么?
A: 返回语句是return (x+7)-2。我们需要知道 x 的值。

问: f 中的x 的值是多少?
A: 这里的x指的是全局变量x,其值为10。重要的是,g 中的var x = 7 是局部变量,与全局变量不同。当我们查看函数 f 时,函数 gvar x = 7 声明是无关紧要的。

同样重要的是,语句 var x = 5var x = 10 都引用了相同 全局变量。局部变量仅在函数内部引入。简单地使用裸花括号并重复 var 关键字不会在 JavaScript 中引入新变量。这是一个棘手的问题,因为在 C++ 等其他语言中,这引入一个新的作用域和一个新的变量。在 JavaScript 中它没有。 var x = 10 可以(而且应该!)简单地写成 x = 10

老实说,这是一个非常微妙和令人困惑的观点。这让我想知道你的教科书是否真的打算测试你对这个想法的了解。这相当神秘。

问: 好吧...f(7) 的结果是什么?
A:(10+7)-2,即15。

关于Javascript 评估问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4227972/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com