错误:"在定义之前使用了角度"但在线编辑器能够输出结果

RAO*_*OUL 4 javascript jslint undefined angularjs adobe-brackets

当我运行本地机器时,我无法从此代码获得输出,但奇怪的部分是在线编辑能够给我一个输出:http://codepen.io/anon/pen/waXGom

*我正在使用Adobe Brackets编辑器

这是我的HTML代码:

    <!DOCTYPE html >
  <html>
    <script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.3.9/angular.min.js"></script>
    <script src= "app.js"></script>    
    <body ng-app="MyApp">

<div ng-controller="Controller2">
    <button ng-click="add()">Add Object</button>
    <button ng-click="reset()">Reset</button>
    <div remove="remove($index)" ng-repeat="name in names">
        {{name}}
    </div>
</div>

</body>
</html>
Run Code Online (Sandbox Code Playgroud)

这是我的JS代码:

var myApp = angular.module('myApp', []);

    myApp.controller('Controller2', function ($scope) {
        $scope.names = [];
    var data = ['Dean', 'Andy', 'Dan', 'Wizek', 'Pete', 'Pawel', 'Chris', 'Misko'];
    $scope.add = function() {
        if (data.length)
            $scope.names.push(data.pop());
    };

        $scope.reset = function(index) {
        data.push($scope.names.splice(index, 1)[0]);
    };
    });
Run Code Online (Sandbox Code Playgroud)

请帮我搞清楚......

ruf*_*fin 20

你的意思是你看到JSLint 定义错误之前使用的角度?那是因为你angular在JavaScript代码中使用全局代码而不让JSLint首先知道它在范围内.

JSLint在逐页的级别上运行,并且无法分析来自外部的全局上下文中包含的内容.您已经将Angular加载到另一个包含的全局上下文中,但JSLint无法告诉它何时单独查看此单个JavaScript文件.

要清楚,那么,这一行应该已经导致JSLint报告错误:

var myApp = angular.module('myApp', []);

您必须添加一个global指令,让JSLint知道全局上下文中的内容.

/*global angular */
var myApp = angular.module('myApp', []);
Run Code Online (Sandbox Code Playgroud)

现在你是金色的.


只是为了好玩,这里是JavaScript文件片段的完全JSLinted版本.没花多少钱.请注意,我必须在if块和jslint指令周围添加斜线括号,以表示white:true非标准空格.更多关于所有在这里.

/*jslint white:true */
/*global angular */
var myApp = angular.module('myApp', []);
myApp.controller('Controller2', function ($scope) {
    "use strict";

    $scope.names = [];
    var data = ['Dean', 'Andy', 'Dan', 'Wizek', 'Pete', 'Pawel', 'Chris', 'Misko'];
    $scope.add = function() {
        if (data.length)
        {
            $scope.names.push(data.pop());
        }
    };

    $scope.reset = function(index) {
        data.push($scope.names.splice(index, 1)[0]);
    };
});
Run Code Online (Sandbox Code Playgroud)