今天我正好碰到了这个问题:未捕获的TypeError:(中间值)(...)不是一个函数
所以是的,在适当的地方放置分号之后,它不再抛出那个错误。然而,我从来不知道JavaScript(中间值)
中有这样一个概念。
显然,您可以使用这段代码生成该错误的类似变体:
[myFunc] = function(someVar){
console.log(someVar);
return 7;
}();
//error thrown: (intermediate value) is not a function or its return value is not iterable
如果您命名该函数,它就不再是中间函数了:
function hi(){return undefined}
[a] = hi();
// error thrown: hi is not a function or its return value is not iterable
我知道它指的是中间的东西,但在本例中,我们有一个匿名函数,并且有一些方法可以确定函数是否是匿名的,因此错误消息可能更明确一些。
搜索js mozilla mdn,我发现了这个关于Array.from
的页面,其中可以找到中间数组的概念:
更清楚地说,Array.from(obj, mapFn, thisArg)
的结果与Array.from(obj). map(mapFn, thisArg)
相同,只是它不创建中间数组。
但是除了这里和那里的一些信息,还不清楚什么是中间值。
这有官方定义吗?
“中间值”只是在表达式中产生的值,而不是表达式的最终值。在a=(b*c)d
中,b*c
的结果是右侧表达式中的中间值。
是的,在这种特定情况下,错误消息可能会说“(匿名函数)不是函数或其返回值不可编辑”。不过,并非所有中间值都是匿名函数。V8的实现者只是选择使用一条通用的错误消息。(SpiderMonkey[在Firefox中]使用相同的术语,但消息不同。)
这有官方定义吗?
规范在这里使用术语“中间结果”,其含义与“中间值”(在我看来)基本相同:
6.2 ECMAScript规范类型
规范类型对应于算法中用于描述ECMAScript语言结构和ECMAScript语言类型语义的元值。规范类型包括引用、列表、完成、属性描述符、词汇环境、环境记录和数据块。规范类型值是规范人工制品,不一定对应于ECMAScript实现中的任何特定实体。规范类型值可用于描述ECMAScript表达式计算的中间结果,但此类值不能存储为对象的属性或ECMAScript语言变量的值。
(我的强调)
请注意,除了给函数起一个名称外,您的代码示例并不相同。其中一个尝试迭代值7
。另一个尝试迭代未定义的值。这与来自V8的错误消息无关,但对SpiderMonkey来说确实如此。让我们将Apple与Apple进行比较,删除不相关项,并声明变量:
"use strict";
var myFunc;
try {
[myFunc] = function(){
return 7;
}();
} catch (e) {
console.error(e.message);
}
try {
[myFunc] = function hi(){
return 7;
}();
} catch (e) {
console.error(e.message);
}
try {
function hi(){
return 7;
}
[myFunc] = hi();
} catch (e) {
console.error(e.message);
}
本文向大家介绍什么是中间件?相关面试题,主要包含被问及什么是中间件?时的应答技巧和注意事项,需要的朋友参考一下 中间件在这里是指注入到应用中处理请求和响应的组件。
用node做中间件的意义是什么?另外,怎么用node做中间件? 平时提到node,大家都会说node一般都是做中间件使用,我个人用node写过后台接口,但是不理解用它做中间件是干什么,你们在项目中有用node做中间件的实际业务吗?
问题内容: 什么是PHP命名空间? 一般而言,命名空间是什么? 一个有例子的Layman答案会很棒。 问题答案: Namespacing对函数和类起作用,而作用域对变量起作用。它允许您在同一程序的不同部分中使用相同的函数或类名称,而不会引起名称冲突。 简单来说, 将名称空间视为一个人的姓氏 。如果有两个人名为“ John”,则可以使用他们的姓氏来区分他们。 场景 假设您编写了一个使用名为的函数的应
在企业内,可按部门、组织、项目等多维度创建团队空间,搭建团队知识库,有效帮助团队成员进行企业文档、资料等知识的统一管理、共享与协作。企业管理员可以设置哪些人可以新建空间,拥有创建空间的员工则可以在团队空间里创建空间,设置空间的管理员和成员,并可为不同的成员或角色设置不同的权限,在实现文件高效共享的同时,保证文件安全,有效防止数据外流。
问题内容: 尽管非常了解JavaScript,但我对Node.js生态系统中的这三个项目的 确切 用途感到困惑。像Rails的架子吗?有人可以解释一下吗? 问题答案: [ 更新: 从4.0版本开始,Express不再使用Connect。但是,Express仍与为Connect编写的中间件兼容。我的原始答案如下。 我很高兴您对此提出疑问,因为对于那些关注Node.js的人们来说,这无疑是一个常见的困