gpt4 book ai didi

javascript - 对于应该是 "1undefined"的东西,输出给出 "1function"。错误在哪里?

转载 作者:行者123 更新时间:2023-12-01 01:14:38 24 4
gpt4 key购买 nike

下面的示例必须输出确定的函数,因为 x 的值为“1”(整数),然后我们传递一个名为“f”的参数(函数的)。这个函数是否执行某些操作或为空并不重要,但我确信变量 f --> 指向函数。所以typeof(f)一定会回来function .

现在,添加一个整数和“函数”(因为 typeof 总是返回一个字符串)将得到一个字符串 --> 1function。

现在,令人惊讶的是输出是“1undefined”。如何?

<script>

var x = 1;
if (function f(){}) {
x += typeof f;
}
console.log(x);

</script>

根据 Ellepsis 的回答,声明不包含在 if() 大括号内,并且仅返回 bool 值。那么解释一下,为什么返回3呢?

<script>

var x = 1;
if (y = 2) {
x = x + y;
}
console.log(x);

</script>

最佳答案

if (function f(){}) {

函数声明将在当前作用域中创建一个同名的变量。

函数表达式只会在其内部创建同名的变量。

因此变量f仅存在:

if (function f(){    })
^^^^
here

函数表达式本身作为函数求值,if 语句将其选取为真值,但作用域内没有 f 变量。

<小时/>

Explain this then, why is it returning 3?

您正在为变量显式赋值。该变量仍在范围内。

如果你这样做,你会得到同样的效果:

if (f = function f(){}) {
<小时/>

所以:

(function f(){})
  • 创建一个函数
  • 将函数命名为f
  • 在名为 f 的函数内部创建一个变量,其中包含对函数的引用
  • 作为函数求值,为真值,通过if来测试

同时:

(f = function f(){})
  • 创建一个函数
  • 将函数命名为f
  • 在名为 f 的函数内部创建一个变量,其中包含对函数的引用
  • 在函数外部创建变量f
  • function f(){} 作为函数求值,并通过 =
  • 分配给 f
  • f = function f(){} 也计算为一个函数,它是一个真值,由 if 测试

关于javascript - 对于应该是 "1undefined"的东西,输出给出 "1function"。错误在哪里?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54882418/

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