JSFiddle - React, Tailwind, and code Playground

by Dmitriy Mozgoviy

JavaScript

console.clear()
console.info(1,js("function test(){ alert(); }"));
console.info(2,js("function test(){ alert([]); }"));
console.info(3,js("function test)({ al]ert(); }"));
console.info(4,js("function test(){ alert(]); }"));
console.info(5,js("function test(){ alert(){]; }")); 
console.info(6,js("function test()[ aler(t();} }"));
console.info(7,js("fun}ction test(){ alert(); }"));

console.info(8, js("function test(){ alert); }"));



     function js(text){
         var i,
             l=text.length,
             char,
             last,
             stack=[],
             index,
             bracketsOpen=["(","{","["],
             bracketsClose=[")","}","]"];

         for(i=0; i<l; i++){
             char=text[i];

             if(bracketsOpen.indexOf(char)!=-1){
                 stack.push(last=char);
             }else if((index=bracketsClose.indexOf(char))!=-1){
                 if(last && last==bracketsOpen[index]){
                     stack.pop();
                     last=stack[stack.length-1];
                 }else{
                     return false;
                 }
             }
         }
         return !last;
     }