问题标签 [function-expression]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
30 浏览

javascript - 为什么将初始函数(函数声明)分配给变量时无法调用初始函数?

我正在通过《面向 Web 开发人员的专业 JavaScript 第 3 版》这本书学习 JavaScript。并且在第7章的7.1节中,作者举了一个例子来实现执行函数与函数名的解耦:

上面的代码无论是否在严格模式下都运行良好。正如我之前看到的,代码分两步工作:

首先:声明函数 f

第二:将函数名f赋给变量factorial

所以我认为在下面的例子中直接调用函数 f 是可行的。

但实际上,它不起作用。控制台说“f不是函数”;为什么?与关闭有什么关系吗?

0 投票
0 回答
80 浏览

javascript - 使用 || 将箭头函数指定为默认值

所以我正在编写一个函数,它将接受一个参数(另一个函数),当未定义时,它将被分配一个默认值。将该默认值分配为 an()=>{}似乎不起作用。但是,当我将默认函数包装(()=>{})或编写一个 normalfunction()时,它似乎工作得很好。像下面这样的代码:


不工作

在职的


我能否解释一下为什么第一个不工作而接下来的两个工作?我怀疑它可能与函数声明 V 函数表达式有关,我对此进行了一些搜索,但找不到正确的解释。具有相同的链接也足够了。谢谢你。

0 投票
1 回答
55 浏览

javascript - JS 类:ES6 myFunc(){..} 和 ES5 myFunc = function() {...} 在类声明中的区别

在下面的代码中,

read = function() { console.log('I am reading') }成为新创建实例的属性,即

p1.hasOwnProperty('read')true

而不是speak() { console.log('I am speaking'); }被分配到PersonClass.prototype. IE

p1.hasOwnProperty('speak')False

p1.__proto__.hasOwnProperty('speak')true

有人可以解释为什么会发生这种情况。

本质上,类中两种方法声明方式之间的区别是什么。

我认为speak() {...}只是更短的语法speak = function() {...}(在 ES6 中)

谢谢

0 投票
1 回答
110 浏览

javascript - 为什么命名函数表达式本身不能将名称分配给另一个值?

如果您运行此示例,您会看到我们无法将任何内容重新分配给functionExpressionName。但这也很有趣,我们可以重新声明functionExpressionName,然后我们可以将任何内容分配给functionExpressionName

0 投票
1 回答
1271 浏览

javascript - 为什么函数声明会被提升而函数表达式不会?

根据吊装定义:

提升是一种 JavaScript 机制,其中变量和函数声明在代码执行之前被移动到其作用域的顶部

为什么函数声明会被提升而函数表达式不会?

0 投票
1 回答
54 浏览

javascript - 表单提交后防止退出弹出加载

我的目标是弹出一个退出窗口,如果有人试图关闭当前选项卡或浏览器,它会触发 window.onbeforeunload。但是在他们填写注册表以选择加入我的电子邮件列表并重定向到我的“感谢页面 URL”后,我不希望退出弹出窗口显示。我正在使用页面构建器,因此代码不是我自己编写的。

这是我正在使用的以下脚本:

至于我的表单,因为在用户输入他们的姓名并单击提交后,他们会重定向到一个 URL,并且一旦重定向开始,就会触发退出弹出窗口。我只希望弹出显示他们是否尝试退出选择,然后在他们采取该操作后禁用它。

我注意到一个带有href ="submit-form"的类标签,如果有帮助的话,我的表单也包含在表单目标标签中。

在 HTML 注册表单中重定向到新页面后,如何实现禁用退出弹出窗口的脚本?

感谢您的任何见解。

0 投票
0 回答
18 浏览

javascript - 结合函数声明和表达式不起作用

我在分别查看函数声明和函数表达式,没问题

但是如果我尝试将它们结合起来,函数声明就会被忽略

我没有需要这种类型声明的真实案例,但我试图理解为什么它不起作用

有人知道正确的文学作品吗?

0 投票
2 回答
74 浏览

javascript - array.filter() 删除函数表达式中的值,而不是箭头函数中的值

我正在解决一个函数array_diff返回数组中的值的问题,这些值a也在数组中b

因为我一直在学习命名函数表达式比匿名胖箭头函数更适合控制台调试,所以我试图用命名removeDuplicate函数来过滤我的数组来解决这个问题。

但是,我无法阻止过滤器函数自动从返回的数组中删除错误值 0。

命名函数表达式:

匿名胖箭头功能:

有人可以向我解释为什么 falsey 值 0 被删除array_diff而不是array_diffTwo

0 投票
1 回答
40 浏览

javascript - 作为参数的匿名函数是函数声明还是函数表达式?

假设函数声明是一个语句,其中 function 关键字是语句的第一个单词,例如:

假设一个函数表达式如下:

对于命名函数

对于匿名函数

匿名函数是什么情况,在以下示例中作为参数传入:

这是一个函数声明还是一个函数表达式,因为它被分配给WindowOrWorkerGlobalScope的 setTimeout 方法的参数变量

0 投票
4 回答
29 浏览

javascript - 如何在其他函数中使用函数表达式值?

我正在学习 Javascript,我做了一个石头、剪刀、纸的项目。我已经让它与示例代码一起工作,但现在我想使用函数表达式在其他函数中使用它的值。当我加载代码时,它给了我未定义的,我不知道为什么。我分配所有值。这是我的代码。

请帮我。