[javascript] What are the rules for JavaScript's automatic semicolon insertion (ASI)?