I am planning to make a free JavaScript online video series. The first chapter covers the Javascript history and its capabilities. Following is a transcript of the video.
I would like it to be reviewed by someone good at JavaScript. Check for the correctness, the accuracy of facts, and any other suggestions or improvements that might seem necessary. I would especially require scrutiny in the 'abilities' section of the script to see if the definitions hold true.
Javascript History and Capabilities
JavaScript was created at Netscape Communications by Brendan Eich and his team in 10 days, in May 1995. Its syntax and functionality were inspired by Java, Scheme, and Self.
Javascript was first named as Mocha, later renamed as LiveScript. LiveScript was again renamed to JavaScript to gain popularity as the 'younger brother' of Java
JavaScript was meant to manipulate web pages by modifying the DOM to show, hide or change content dynamically
Is used for online form submissions and animations.
It is the Defacto client-side scripting language of browsers, a popular choice on servers as well.
ECMAScript is a scripting language specification standardized by Ecma International, it is a set of guidelines to design a scripting language. JavaScript is an implementation of ECMAScript
Javascript is a scripting language since it is interpreted by browsers and there is no intermediate compiled code. Modern browsers now use JIT compilers to 'semi compile' it in order to optimize its execution
Javascript is single-threaded to minimize complexities with concurrency
In browsers and servers Javascript codes are parsed (read) inside an environment called Javascript Engine. Javascript engine compiles it to machine language and instructs the OS to execute the instructions
Some notable javascript engines are
- V8 – in Chrome and Opera.
- SpiderMonkey – in Firefox.
- ChakraCore - in Microsoft Edge.
- Nitro or SquirrelFish - in Safari
Abilities
- can run multiple tasks simultaneously without blocking any of the tasks (Asynchronous)
- can exchange data asynchronously with a server across a network (Fetch API or AJAX)
- can react to user actions such as mouse click, keypress, etc (event handling)
- can switch between tasks in a single-threaded execution (concurrency)
- can make use of object-oriented concepts (prototype-based Object Model)
- can manipulate DOM of the browser to change the display of the webpage
- can store data locally on browsers (cookies, local storage, etc)
Restrictions placed in the browser for the sake of data safety
- Does not provide low-level CPU and memory access
- Cannot implicitly access files or OS functions
- users need to explicitly provide file access by input tags as well as for input device access such as camera and microphone, cannot access other tabs of the browser.
- It follows the 'same-origin policy' wherein javascript from one domain cannot access resources from a different domain if it doesn't have a CORS header
Javascript running on the server side have full access to the file system, input devices, and OS functions. it does not follow 'same-origin policy'
Javascript Capabilities depend on the implementation of the javascript engine and the interfaces provided to it by the environment.
Other languages compile into javascript which is then parsed by javascript engines. One such notable language is TypeScript which adds strict typing and object orientation.