One confusing, but fundamental, fact about a mathematical limit of a function #f(x)# as #x# approaches some number #c# is that the value of #f(c)# is technically irrelevant, though often useful (when the function is continuous at #c#).
For example, if #f(x)=(x^2+2x-3)/(x-1)# as in the example above, technically the value #f(1)# is undefined. However, #lim_{x->1}f(x)=4# because the outputs of #f(x)# can be made as close to 4 as we want by taking #x# sufficiently close to, but not equal to, 1. For instance, if we want the value of #f(x)# to get within a distance 0.1 of 4, we can take #x# to be within a distance 0.1 of 1 (note that, for example, #f(0.95)=3.95# and #f(1.05)=4.05#).
Why does this happen for this example? Because we can factor the top to get #f(x)=((x-1)(x+3))/(x-1)# and then cancel the #x-1# factor to say #f(x)=x+3# when #x# is NOT equal to 1. So the function #f(x)# has a graph that is a straight line with a slope of 1 and a y-intercept of 3, except that the point #(1,4)# is "missing" from the graph (the graph has a "hole" in it). In other words, #f(x)# is not continuous at #x=1#.
A continuous function, whose graph can be drawn without picking up your pencil, such as #f(x)=x^2#, can have its limit evaluated as #x# approaches any number #c# just by finding #f(c)#.
An interesting example involving a trigonometric function to consider is #lim_{x->0}(sin(x))/x#. See if you can find this limit and prove that you are right.