如何解决此 "unreachable code after return statement" 警告?

How to resolve this "unreachable code after return statement" warning?

我正在尝试学习 angularjs 的基础知识,并且正在使用教程应用程序和 ng-js v1.6.6。虽然项目显示 (localhost),但浏览器会显示警告,如截屏所示。 Chrome 不显示 firefox 显示的错误。代码没问题还是第17行/第50行有错误?

   'use strict';

    angular.module('components.phone')
    .factory('Phone', ['$resource', function($resource,) {
    return $resource('components/phone/data/phones/:phoneId.json', {}, { 
        query: {
            method:'GET', 
            params: { phoneId:'phones' },
            isArray: true
            }
        }
      )    

     return factory;//<======LINE 17 -IS THE REST OF THE CODE 'UNREACHABLE'?
     }])

.service('PhoneService', ['$q','$http', '$resource', function($q, $http) {
    var service = { 
        get: function() {
            var deferred = $q.defer();

            $http.get('components/phone/data/phones/phones.json', { 
                params: { phoneId:'phones' } 
            })
            .then(function(response){
                deferred.resolve(response.data);
            })
            .catch(function(response){
                deferred.resolve(response);
            });

            return deferred.promise;
        },

        getAllPhones: function() {
            return $http.get('components/phone/data/phones/:phoneId.json', { 
                cache:   true }
            ).then(function(resp) {
                return resp.data;
            });
        },

        getPhone: function(phoneId) {
                for (i = 0; i < phones.length; i++) {
                    if(phones[i].id == phoneId){
                    this.phone = phones[i];
                     break; <==== THIS SYNTAX IS NOW CHANGED, THANKS@SYNCRO!


        return  $http.get('components/phone/data/phones/' +    $stateParams.phoneId + '.json')
                    .then(function(response) {
                        self.phone = response.data;

                    })
            }

            return service.getAllPhones().then(function (getPhone) {
                return selected.phone;
            })
        }
    }

    return service;
}])

.run(['$rootScope', '$state', '$stateParams',
    function ($rootScope, $state, $stateParams) {
        $rootScope.$state = $state;
        $rootScope.$stateParams = $stateParams;
    }  
])

在你的 getPhone 方法中,如果你 return 在一个 for 循环中, for 循环之后的代码将不会被执行,这就是为什么你的浏览器会警告你这个警告消息。

您也可以在 Chrome 中看到此消息,您只需在 Chrome DevTools 中更改日志优先级即可。

您可以在我为您编写的这个小脚本中看到 return 问题:https://jsfiddle.net/kmy7hq8q/

要离开循环,您只需使用 break,而不是 return

if(phones[i].id == phoneId){
    this.phone = phones[i];
    break;
}