That's not how the comparison function for [`Array.sort()`](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/sort) works at all: it should return negative, zero, or positive.

Eating up all or part of the `props` argument (due to your `array.shift()` call) is bad practice.

The usage is cumbersome:

>     array.sort(function(a,b) { return comparePropsOfAWithB(a,b,["a","b","c"]) })

Wouldn't it be nicer to write a `propertyComparator(…)` function that returns a function?

    array.sort(propertyComparator('a', 'b', 'c'))

Something like this:

    function propertyComparator() {
        var props = arguments;
        return function(a, b) {
            for (var i = 0; i < props.length; i++) {
                var aProp = a[props[i]];
                var bProp = b[props[i]];
                if (aProp < bProp) return -1;
                if (aProp > bProp) return +1;  
            }
            return 0;
        };
    }