Edit in JSFiddle

function assert(value, desc){
    var res = $("#results");
    var li = document.createElement("li");
    li.className = value ? "pass" : "fail";
    li.appendChild(document.createTextNode(desc));
    res.append(li);
  }
// adding a property to a function so that it can remember its previously computed results - this concept is called memoization
function isPrimeNumber(num){
    if(!isPrimeNumber.cache) isPrimeNumber.cache = {};
    if(isPrimeNumber.cache[num] != null){
        return isPrimeNumber.cache[num];
    }
    var result = num != 1;
    for(var i=2;i<num;i++){
        if(num % i == 0){
            result = false;
            break;
        }  
    }
    return isPrimeNumber.cache[num] = result;
}

assert(isPrimeNumber(5),"5 is a prime number");
assert(!isPrimeNumber(4), "4 is not a prime number");
assert(isPrimeNumber.cache[5], "Result for 5 is cached");
<div id="results"/>
body{
    margin:10px;
}

.pass{
  color:green;
}

.fail{
  color:red;
  text-decoration:line-through;
}