One of the purposes of the + sign in JS is to parse the right part into the number.
const str = '4';
console.log(str + 5); // Concatenared as strings
console.log(+str + 5); // Sums the numbers
In your case you have an statement i < +num, which just parses num into number and i compares with it. If your num is a number, this will do nothing.
Look. I have used '10' instead of 10 and it still works, because the given string is parsed into number.
var laugh = function(num) {
var string="";
for (var i = 0; i < +num; i++) {
string+="ha";
}
return string + "!";
};
console.log(laugh('10'));