First of all, we are talking about a behavior of a function around some particular value of an argument.
Let’s assume our function is represented as ##y=f(x)## and its behavior around the value of argument ##x=a## is what we are analyzing.
Also assume that the following two limits are properly defined, exist and are finite: 1. Limit of the function as argument ##x## approaches a value ##a## from the left: ##c=lim_(x->a^-)f(x)## 2. Limit of the function as argument ##x## approaches a value ##a## from the right: ##d=lim_(x->a^+)f(x)##
If the above limits are equal and a function ##f(x)## is defined at ##x=a## and its value is the same as these limits, we have no discontinuity. In other words, the condition for not having a discontinuity is ##lim_(x->a^-)f(x) = lim_(x->a^+)f(x) = f(a)## Example of a function with no discontinuity is ##y=|x|##: graph{|x| [-10, 10, -5, 5]}
If the above limits are not equal, we have a jump discontinuity. In other words, the condition for a jump discontinuity is ##lim_(x->a^-)f(x) != lim_(x->a^+)f(x)## Example of a function with a jump discontinuity at ##x=0## is ##y=-1## for negative ##x##, ##y=1## for positive ##x## and ##y=0## for ##x=0##: graph{x/|x| [-10, 10, -5, 5]}
Finally, If the above limits are equal but a function ##f(x)## is either not defined at ##x=a## or is defined, but its value is not the same as these limits, we have a removable discontinuity. In other words, the condition for a removable discontinuity is ##lim_(x->a^-)f(x) = lim_(x->a^+)f(x)## AND ##f(a)## IS UNDEFINED OR ##f(a) != lim_(x->a^-)f(x)## Example of a function with removable discontinuity is ##y=x^2## everywhere except ##x=0## and function is undefined at ##x=0## : graph{x^3/x [-10, 10, -5, 5]}