当我将js逻辑作为单个js文件编写在闭包中时,一切正常,如下所示:
(function(win){
//main logic here
win.expose1 = ....
win.expose2 = ....
})(window)
但是当我尝试在同一个js文件中的闭包之前插入一个日志替代函数时,
window.Glog = function(msg){
console.log(msg)
}
// this was added before the main closure.
(function(win){
//the former closure that contains the main javascript logic;
})(window)
它抱怨存在类型错误:
Uncaught TypeError: (intermediate value)(...) is not a function
我做错了什么?
错误案例:
var userListQuery = {
userId: {
$in: result
},
"isCameraAdded": true
}
( cameraInfo.findtext != "" ) ? searchQuery : userListQuery;
输出:
TypeError: (intermediate value)(intermediate value) is not a function
修正:您缺少一个分号(;)分开表达
userListQuery = {
userId: {
$in: result
},
"isCameraAdded": true
}; // Without a semi colon, the error is produced
( cameraInfo.findtext != "" ) ? searchQuery : userListQuery;
以(
,[
,'或任何算术运算符开头的每一行,如果您希望它被解释为自己的行,则必须以分号开头~否则,它可能会意外地与前一行结合。所有其他换行符都有隐式分号。
就这样。完成。
考虑以下事项:
func()
;[0].concat(myarr).forEach(func)
;(myarr).forEach(func)
;`hello`.forEach(func)
;/hello/.exec(str)
;+0
;-0
遵循上述规则可防止将上述解释为
func()[0].concat(myarr).forEach(func)(myarr).forEach(func)`hello`.forEach(func)/hello/.forEach(func)+0-0
提到将会发生什么:括号将索引,括号将被视为函数参数。反勾号将转换为带标记的模板,正则表达式将转换为除法,显式/带符号的整数将转换为加减运算符。
当然,您可以通过在每个换行符的末尾添加分号来避免这种情况,但不要认为这样做可以让您像C程序员一样编写代码。因为当您不以分号结束一行时,Javascript可能会根据您的意愿隐式添加一个分号。所以,请记住以下语句
return // Implicit semicolon, will return undefined.
(1+2);
i // Implicit semicolon on this line
++; // But, if you really intended "i++;"
// and you wrote it like this,
// you need help.
上述情况会发生返回/继续/中断/ /--.任何linter都会用死代码或 /--语法错误来捕获这一点 ( /-- 永远不会实际发生)。
最后,如果您希望文件连接工作,请确保每个文件以分号结尾。如果您使用的是bundler程序(推荐使用),它应该会自动执行此操作。
错误是第三行缺少分号的结果:
window.Glog = function(msg) {
console.log(msg);
}; // <--- Add this semicolon
(function(win) {
// ...
})(window);
ECMAScript规范有自动插入分号的特定规则,但是在这种情况下分号不会自动插入,因为从下一行开始的括号表达式可以被解释为函数调用的参数列表。
这意味着如果没有分号,匿名窗口将关闭。Glog
函数被调用时,函数作为msg
参数,后跟(窗口)
,随后尝试调用返回的任何内容。
以下是代码的解释方式:
window.Glog = function(msg) {
console.log(msg);
}(function(win) {
// ...
})(window);
在我的redux js应用程序(google appengine后端)中,当打开包含根组件的页面时,我会收到以下警告和错误消息。 警告:失败的proType:无效的prop类型的提供给,预期的。检查的渲染方法。bundle.js:6169 警告:propType失败:提供给的类型的无效,应为。检查的渲染方法。捆js:6169 警告:失败的上下文类型:类型的无效子上下文提供给,预期的。检查的渲染方法
无法理解为什么在尝试实现此角度代码时会出现TypeError。它在类({constructor:function(){}})周围生成错误。不确定原因。谢谢你的帮助
store.js index.js 文件夹src compose index.js和store.js 显示消息未捕获类型错误:(0,_store.configureStore)在F12时不是函数 帮帮我谢谢
我试图在setTimeout之后进行状态更改以更改类名,但是,我总是得到一个“aboutheader.jsx:21 uncathed typeerror:this.setstate不是一个函数”。从“React”导入React; require('../../stylesheets/component/aboutheader.scss'); timeDelay(){setTimeout(函数upd
我的代码: external.js: 不幸的是,当我包含外部脚本时,出现以下错误: 错误:$不是一个函数 我该怎么解决这个问题?请记住,我不能编辑外部Javascript文件,因为它是第三方的。
因此,我想使用Apollo客户端react钩子“usequery”查询运行Apollo服务器的graphql后端。 但是定义的查询常量将返回一个错误,它是:uncatched typeerror:(...)不是函数,因此页面根本不呈现。 我的ApolloClient和提供程序设置如下: 当加载应用程序时,它会给我上面提到的错误。我在2小时内跟踪了我能找到的每一个教程,googeling和YouTu