Javascript TypeError:console.log(…)不是函数
我真的很困惑如何才能获得console.log,因为它不是第1091行的函数。如果我删除下面的闭包,第1091行不会抱怨这样的错误。Chrome版本43.0.2357.130(64位) 代码如下:Javascript TypeError:console.log(…)不是函数,javascript,Javascript,我真的很困惑如何才能获得console.log,因为它不是第1091行的函数。如果我删除下面的闭包,第1091行不会抱怨这样的错误。Chrome版本43.0.2357.130(64位) 代码如下: $scope.columnNameChanged = function (tableColumn) { setDirtyColumn(tableColumn); //propagate changes to the key fields for (var i = 0; i &
$scope.columnNameChanged = function (tableColumn) {
setDirtyColumn(tableColumn);
//propagate changes to the key fields
for (var i = 0; i < $scope.tableIndexes.length; ++i) {
for (var j = 0; j < $scope.tableIndexes[i].columnName.length; ++j) {
if ($scope.tableIndexes[i].columnName[j] === tableColumn.previousName) {
console.log('xxx', $scope.tableIndexes[i].columnName[j])
(function (i, j) {
$timeout(function () {
console.log($scope.tableIndexes[i].columnName[j])
$scope.tableIndexes[i].columnName[j] = tableColumn.name.toUpperCase();
console.log($scope.tableIndexes[i].columnName[j])
});
})(i, j);
}
}
}
};
$scope.columnNameChanged=函数(tableColumn){
setDirtyColumn(tableColumn);
//将更改传播到关键字段
对于(变量i=0;i<$scope.tableIndexes.length;++i){
对于(var j=0;j<$scope.tableIndexes[i].columnName.length;++j){
if($scope.tableIndexes[i].columnName[j]==tableColumn.previousName){
console.log('xxx',$scope.tableIndexes[i].columnName[j])
(功能(i,j){
$timeout(函数(){
console.log($scope.tableIndexes[i].columnName[j])
$scope.tableIndexes[i].columnName[j]=tableColumn.name.toUpperCase();
console.log($scope.tableIndexes[i].columnName[j])
});
})(i,j);
}
}
}
};
该错误意味着console.log()
的返回值不是函数。您缺少分号:
console.log('xxx', $scope.tableIndexes[i].columnName[j]);
// ^
这使得IIFE的以下(…)
被解释为函数调用
比较的错误消息
> var foo = {bar: undefined};
> foo.bar();
Uncaught TypeError: foo.bar is not a function
及
解决方案
只需在控制台.log(
…)
后面加一个分号(;
)
解释 误差很容易重复,如下所示:
console.log()
(函数(){})
2020更新
一个可能的原因是脚本中的某个地方声明了var console
使用:
相反。为我工作
我希望这会有所帮助还有另一种方法可以遇到这个错误<代码>控制台。日志不是不可变的,可能会意外覆盖该值
console.log = 'hi';
在这种情况下,只需重新加载页面即可撤消损坏。我知道这不是“正确”的答案,但我想我会加入以下内容
var console = $( data.message_target );
console.val( console.val() + data.message);
console.scrollTop(console[0].scrollHeight - console.height());
我在页面上有一个文本区域,我称之为“控制台”。突然,我所有的console.log()脚本都出现了错误“uncaughttypeerror:console.log不是Object上的函数”
。。。这是正确的,因为我为我的object/var使用了一个保留的名称空间。我在阅读了他的文章之后意识到了我所做的事情,并且为了后代:仔细检查命名约定
干杯
“总是人为错误”至少在react native中,控制台似乎在没有任何导入的情况下工作,因此,删除
import console=require('console')代码>或从“控制台”导入控制台代码>从我的文件开始为我修复了它。(VS Code IDE有时似乎会自动添加此功能)很抱歉,图片的大小似乎调整得太小了。我正在尝试如何使其显示原始大小。请不要使用图片显示代码和错误,这是一种不好的做法。谢谢。通过添加分号解决问题。javascript中多么黑暗的一个角落啊。@ElgsQianChen:总是使用分号的一个原因。这也是因为console.log()
itsconsole.log(…)
3点不是函数错误,否则应该是console.log
不是函数(只有当它不是但实际上是时才是)@vinayakj。如果某个函数不是函数,那么该函数总是通过其函数名来引用,例如。gobject.method
,如果使用返回值,尤其是在链式方法中,则返回值将是object.method(…)
。需要一定的经验才能知道为什么总是使用分号,以及如何正确解释JavaScript错误消息。这样,如果你移动它,它就不会在其他地方丢失分号。此外,如果在缩小/捆绑过程中出现奇怪的情况,那会更安全。我也有同样的问题,global.console.log也可以工作,为什么会发生这种情况?如何修复它并使用consol.log
console.log = 'hi';
var console = $( data.message_target );
console.val( console.val() + data.message);
console.scrollTop(console[0].scrollHeight - console.height());