Source: https://www.sis.pitt.edu/spring/E-Business/technology/pdf/20javascript_intro.PDF