创建新阵列和清除长度之间的区别

pan*_*s72 4 javascript arrays angularjs

如果我必须删除数组中的所有项目,使用new Array和之间有什么区别length = 0?在示例中,显然结果看起来相同.

function MyCtrl($scope) { 
    
    $scope.arrayData = ["1", "2", "3"];
    
    $scope.newArray1 = function(){
    	$scope.arrayData = new Array();
    }    
    
    $scope.newArray2 = function(){
    	$scope.arrayData = [];
    }
        
    $scope.lengthZero = function(){
    	$scope.arrayData.length = 0;
    }    
            
    $scope.populate = function(){
    	$scope.arrayData.push("1", "2", "3");
    }    
 }
 
 
Run Code Online (Sandbox Code Playgroud)
<script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.2.23/angular.min.js"></script>

<div ng-app ng-controller="MyCtrl">
Data:
</h2><br>
   <ul>
        <li ng-repeat="data in arrayData">{{data}}</li>
    </ul> 
    <button ng-click="newArray1()">New Array - 1st method</button>
    <button ng-click="newArray2()">New Array - 2nd method</button>
    <button ng-click="lengthZero()">Length = 0</button>
    
    <button ng-click="populate()">Populate</button>
</div>
Run Code Online (Sandbox Code Playgroud)

Mar*_*ker 5

只是使用[]和之间有很大的区别.length = 0.

如果您使用,= []您将为变量分配一个新的引用,失去对原始引用的引用.通过使用,.length = 0您将清除原始数组,保留原始参考.