Javascript ReferenceError:未定义变量

Javascript ReferenceError:未定义变量,javascript,angularjs,Javascript,Angularjs,我有一个angularjs代码,其中变量dataKey在watcher中给定一个值。当我在console中记录该值时,它会显示出来(对于ex.4),但在下面的语句中,它给出了错误:ReferenceError:datakey未定义。这怎么可能 下面是代码片段 myApp.directive('circlepackingChart', function($window) { return { restrict: 'EA', link: function(s

我有一个angularjs代码,其中变量
dataKey
在watcher中给定一个值。当我在console中记录该值时,它会显示出来(对于ex.4),但在下面的语句中,它给出了错误:
ReferenceError:datakey未定义
。这怎么可能

下面是代码片段

myApp.directive('circlepackingChart', function($window) {
    return {
        restrict: 'EA',

        link: function(scope, elem, attrs) {
            var dataFile = scope.dataFile;
            var dataKey = attrs.expKey|| false;
            var d3 = $window.d3;
            var div = elem[0];
            var width = div.offsetWidth;
            var height = width / 2;


            scope.$watch(function() {
                return attrs.expKey;
            }, function(value) {

                dataKey = value || false;

                console.log(datakey);

                if (datakey) {
                    drawCirclePacking();
                }

            });
            drawCirclePacking = function(){
                /*some code*/
            }
        }
    }
});

JavaScript是一种区分大小写的语言。这意味着语言关键字、变量、函数名和任何其他标识符必须始终以字母大小写一致


没有定义datakey,因为您定义的datakey是一种区分大小写的语言。这意味着语言关键字、变量、函数名和任何其他标识符必须始终以字母大小写一致


未定义datakey,因为您定义了datakey

$scope。watch
将密钥导出到范围内定义的变量

因此,在您的例子中,angular正在查找尚未定义的
$scope.dataKey

为了使其工作,请将变量添加到范围中:

        scope.dataFile = scope.dataFile;
        scope.dataKey = attrs.expKey|| false;

$scope.watch
导出作用域内定义的变量的键

因此,在您的例子中,angular正在查找尚未定义的
$scope.dataKey

为了使其工作,请将变量添加到范围中:

        scope.dataFile = scope.dataFile;
        scope.dataKey = attrs.expKey|| false;