Javascript TypeError:console.log(…)不是函数

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 &

我真的很困惑如何才能获得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.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()
its
console.log(…)
3点不是函数错误,否则应该是
console.log
不是函数(只有当它不是但实际上是时才是)@vinayakj。如果某个函数不是函数,那么该函数总是通过其函数名来引用,例如。g
object.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());