ng-show vs ng-if

HTML

<div ng-app ng-controller="Controller">
    <!-- ng-show example -->
    <p>
        <input type="checkbox" ng-model="obj.ngShow" /> <span ng-show="obj.ngShow">ng-show (This stays in the dom)</span>

    </p>
    <!-- ng-if example -->
    <p>
        <input type="checkbox" ng-model="obj.ngIf" /> <span ng-if="obj.ngIf">ng-if (This gets removed from the dom)</span>

    </p>
</div>

JavaScript

function Controller($scope) {

    // This comes from the server
    $scope.obj = {
        ngShow: true,
        ngIf: true
    };

}