Дополню Дмитрия.
1. Плохое знание нативных методов.
inp.value.indexOf('/')!=-1 // includes
inp.value.slice(-1)
inp.value.substring(0, inp.value.length - 1) // в честь чего тут субстринг, когда везде слайс используешь?
2. Извращения:
inp.value.slice(index - inp.value.length + 1) // для чего тут inp.value.length?
3. Неумение использовать свитч:
case 'multiply':
inp.value += item.innerText
break;
case 'division':
inp.value += item.innerText
break;
case 'sub':
inp.value += item.innerText
break;
case 'sum':
inp.value += item.innerText
break;
case 'dot':
inp.value += item.innerText
break;
// =
case 'multiply':
case 'division':
case 'sub':
case 'sum':
case 'dot':
inp.value += item.innerText
break;
4. А тут DRY повесился:
if (inp.value.indexOf('*')!=-1) {
index = inp.value.indexOf('*')
inp.value = parseFloat(inp.value.slice(0, index)) * parseFloat(inp.value.slice(index - inp.value.length + 1))
} else if (inp.value.indexOf('/')!=-1) {
index = inp.value.indexOf('/')
inp.value = parseFloat(inp.value.slice(0, index))/parseFloat(inp.value.slice(index-inp.value.length+1))
} else if (inp.value.indexOf('-')!=-1) {
index = inp.value.indexOf('-')
inp.value = parseFloat(inp.value.slice(0, index))-parseFloat(inp.value.slice(index-inp.value.length+1))
} else if (inp.value.indexOf('+')!=-1) {
index = inp.value.indexOf('+')
inp.value = parseFloat(inp.value.slice(0, index))+parseFloat(inp.value.slice(index-inp.value.length+1))
}
Это что вот прям сильнее всего бросается в глаза, реализовано всё очень... Слабо. Такой простой калькулятор уж точно не является демонстрацией своего скила, он в лучшем случае демонстрирует знание основ, с чем у тебя явные проблемы.
Иными словами, это даже не уровень трейни.