Javascript'in'函数在控制台中抛出错误

时间:2014-06-16 09:19:01

标签: javascript jquery angularjs

我有一个javascript函数如下:

        if (',' in mpttexclusion){
            $scope.exclusion = $scope.mpttexclusion.split(',');
        } else {
            $scope.exclusion = $scope.mpttexclusion;
        }

但是当我检查控制台时,我收到了这个错误:

TypeError: Cannot use 'in' operator to search for ',' in 175
    at new ModalInstanceCtrl (http://127.0.0.1:8000/static/js/app.js:180:15)
    at invoke (http://ajax.googleapis.com/ajax/libs/angularjs/1.2.8/angular.js:3704:17)
    at Object.instantiate (http://ajax.googleapis.com/ajax/libs/angularjs/1.2.8/angular.js:3715:23)
    at http://ajax.googleapis.com/ajax/libs/angularjs/1.2.8/angular.js:6766:28
    at http://angular-ui.github.io/bootstrap/ui-bootstrap-tpls-0.10.0.min.js:8:22381
    at wrappedCallback (http://ajax.googleapis.com/ajax/libs/angularjs/1.2.8/angular.js:10943:81)
    at http://ajax.googleapis.com/ajax/libs/angularjs/1.2.8/angular.js:11029:26
    at Scope.$eval (http://ajax.googleapis.com/ajax/libs/angularjs/1.2.8/angular.js:11949:28)
    at Scope.$digest (http://ajax.googleapis.com/ajax/libs/angularjs/1.2.8/angular.js:11775:31)
    at Scope.$apply (http://ajax.googleapis.com/ajax/libs/angularjs/1.2.8/angular.js:12055:24) angular.js:9413
(anonymous function) angular.js:9413
(anonymous function) angular.js:6832
wrappedCallback angular.js:10946
(anonymous function) angular.js:11029
Scope.$eval angular.js:11949
Scope.$digest angular.js:11775
Scope.$apply angular.js:12055
(anonymous function) angular.js:17833
(anonymous function) angular.js:2612
forEach angular.js:309
eventHandler angular.js:2611

我已经检查了几个问题,但我不确定我是否能完全理解这里的错误。

3 个答案:

答案 0 :(得分:3)

您可以改为使用indexOf:

if($scope.mpttexclusion.indexOf(',') >= 0)
  $scope.exclusion = $scope.mpttexclusion.split(',');
else
  $scope.exclusion = $scope.mpttexclusion;

答案 1 :(得分:1)

你应该这样做,

if (mpttexclusion.indexOf(',') > -1){

而不是

if (',' in mpttexclusion){

因为in基本上在迭代中使用,如

var x = [10,2,3,1];

for(val in x){
 console.log(val);
}

答案 2 :(得分:0)

正如Frédéric在最初问题的评论中所指出的那样:

for (var x in object) {
  ...some code...
}

更适用于对象而不是字符串。

MDN描述它:

  

以任意方式迭代对象的可枚举属性   订购。对于每个不同的属性,可以执行语句。

正如其他人已经指出正确的答案我只是认为我链接到一个资源,可以帮助你理解与方法的问题。

希望这有帮助