本文系统梳理JavaScript基础语法,涵盖ECMAScript、DOM与BOM三大组成部分。详细解析通过script标签嵌入或引入外部JS文件的两种方法,重点对比async与defer属性的执行差异,并说明注释、空格处理、代码折行及大小写敏感等编码规范,帮助开发者掌握JavaScript入门核心知识。
JavaScript核心组成
一、定义 JavaScript是一种用于增强页面动态效果、实现页面与用户实时交互的解释型脚本语言。它主要由三个部分构成:ECMA、DOM和BOM。
[1]ECMAScript由ECMA-262标准定义,提供核心语言功能(ECMA指欧洲计算机制造商协会)。
[2]DOM(文档对象模型)提供了访问和操作网页内容的方法接口。
[3]BOM(浏览器对象模型)提供了与浏览器进行交互的方法接口。
JavaScript引入方式与script标签
二、引入 在网页中引入JavaScript主要有两种方式:在页面内直接嵌入JS代码,或者引入外部JS文件。
[1]页面内嵌入
<script>
alert("My First JavaScript");
</script>
[2]引入外部JS文件
[注意]带有src属性的<script>元素不应在标签内部再包含额外的JS代码。若同时包含嵌入代码,浏览器将仅下载并执行外部脚本,而忽略内部嵌入的代码。
<script src="myScript.js"></script>
<script>
无论采用哪种引入方式,都必须使用<script>标签。该标签共有6个属性,其中language属性已被废弃。
[1]src:指定包含要执行代码的外部文件路径,支持跨域引用。
[2]charset:可选属性,指定通过src引用的代码字符集,大多数浏览器会忽略此设置。
[3]defer:可选属性,表示脚本将延迟到文档完全解析并显示后再执行,仅对外部脚本有效。
[4]async:可选属性,表示脚本应立即下载,但不阻塞页面其他操作,仅对外部脚本有效。
[5]type:可选属性,作为language的替代,指定脚本语言的内容类型(MIME类型)。为保持兼容性,通常使用text/javascript;若不指定,默认值也是text/javascript。
[6]language:已废弃。
异步加载:async与defer详解
async和defer
[1]如果未设置async和defer,浏览器会立即加载并执行指定的脚本。
<script src="test.js"></script> [2]如果仅设置async,浏览器会异步下载脚本,不阻塞页面的其他操作。
[注意]异步脚本(async)一定会在页面的load事件之前执行。
<script src="test.js" async></script> [3]如果仅设置defer,脚本会被延迟到文档完全被解析和显示后再执行。
<script src="test.js" defer></script>
代码规范:注释、空格与大小写
注释 注释能提高代码可读性,帮助开发者阅读和理解JavaScript代码。注释内容不会在网页中显示,分为单行注释和多行注释两种。
//单行注释
/*
多行注释
*/
忽略空格 JavaScript会忽略多余的空格,开发者可以通过添加空格来提高脚本的可读性。
//以下写法均正确
var name="hello";
var name ="hello";
var name = "hello";
代码折行 可以在文本字符串中使用反斜杠(\)对代码行进行换行处理。
//正确
document.write("Hello \
World!");
//错误
document.write \
("Hello World!");
大小写敏感 JavaScript中的变量、函数名和操作符均区分大小写。例如,函数getElementById与getElementbyID不同,变量myVariable与MyVariable也是不同的标识符。
保留字和关键字 ECMA-262定义了一组具有特定用途的关键字,用于表示控制语句的开始或结束,或执行特定操作;此外还定义了一组保留字,这些保留字目前不能用作标识符,但未来可能成为关键字。

//第5版在非严格模式下的保留字
Class | enum | extends | super | const | export | import
//第5版在严格模式下的保留字
Implements | package | public | interface | private | static | let* | protected | yield*