每一种编程语言都有自己的“说话方式”,JavaScript也不例外。语法(Syntax)就是这门语言规定的规则——它告诉我们应该如何组织字符、关键字和运算符,才能让计算机理解我们的意图。JavaScript的语法风格与C和Java同属一族,这意味着如果你有过这些语言的基础,会觉得格外亲切;如果你是零基础起步,今天的内容也会帮你打下扎实的地基。
一、JavaScript语法的基本骨架
我们先看一个最简单的语句:
console.log("代码号:欢迎学习JavaScript语法");
这行代码做了什么事?它调用了一个名为console.log的函数,向控制台输出了一段文字。从这个例子中,我们可以提炼出JavaScript语法的几个基本规则:
-
区分大小写:
console和Console是两个不同的东西,写错了浏览器就不认识。 -
语句可加分号:虽然现代JavaScript引擎可以自动插入分号(ASI),但我个人建议你养成主动写分号的习惯。在代码号(https://www.ebingou.cn/)的源码中,你会发现我们始终使用分号明确语句的结束位置,这在压缩代码时能避免很多歧义。
-
代码块用花括号包裹:无论是函数、循环还是条件判断,凡是需要组合多条语句的地方,都要用
{}把它们圈起来。
二、JavaScript的两类核心值:字面量与变量
在JavaScript的世界里,所有数据都可以归为两类:固定不变的值和可以变化的值。
1. 字面量(Literals)——固定值
字面量就是你直接写在代码里的那些值。它们不会变,写死了就是写死了。
数字字面量:整数或小数,直接写出来就好。
// 代码号示例:数字字面量
let 学生人数 = 28; // 整数
let 平均分 = 85.5; // 浮点数(小数)
console.log("班级人数:" + 学生人数 + ",平均分:" + 平均分);
字符串字面量:用引号包围的一段文本。单引号、双引号都可以,但要成对出现。
// 编程学习提示:字符串字面量
let 网站名称 = '代码号';
let 域名 = "https://www.ebingou.cn/";
console.log(网站名称 + '的教程地址是:' + 域名);
个人见解:新手常犯的错误是引号不匹配,比如开头用了单引号,结尾用了双引号。我自己的习惯是项目中统一使用单引号,只有在需要包含单引号的字符串里才用双引号,这样视觉上更清爽。
2. 变量(Variables)——存储值的容器
变量就像一个带标签的盒子,你可以往里面放任何东西,也可以随时替换里面的内容。声明变量有三个关键字:var、let、const。
全局变量与局部变量:
// 全局变量:在任何函数外部定义
let 全局课程 = "JavaScript基础教程";
function 显示课程() {
// 局部变量:只能在函数内部访问
let 局部提示 = "欢迎来到代码号";
console.log(全局课程); // 可以访问
console.log(局部提示); // 可以访问
}
显示课程();
// console.log(局部提示); // 这里会报错,因为局部变量在外面访问不到
输出:
JavaScript基础教程 欢迎来到代码号
个人见解:我强烈建议初学者从现在开始就养成只用
let和const的习惯,尽量避免使用var。var的作用域规则比较古怪(函数作用域),而let和const是块级作用域,更符合现代编程的直觉。如果你希望一个变量永不改变,就用const声明,这样能防止代码后面无意中修改它。
三、运算符与表达式
运算符是连接数据和执行动作的桥梁。
算术运算符:+、-、*、/ 等等。
赋值运算符:= 将右边的值赋给左边的变量。
表达式:任何能计算出值的代码片段都是表达式。
// 代码号学习编程示例:表达式计算
let 代码号学员总数 = 150;
let 新加入学员 = 8;
let 当前总人数 = 代码号学员总数 + 新加入学员; // 这就是一个表达式
console.log("更新后总人数:" + 当前总人数);
// 更复杂的表达式
let 平均学习时长 = (15 + 20 + 18) / 3; // 先计算括号内,再除法
console.log("平均学习时长:" + 平均学习时长 + "分钟");
输出:
更新后总人数:158 平均学习时长:17.666666666666668分钟
个人见解:写表达式时,适当使用括号可以让代码意图更清晰。虽然运算符有优先级,但不要指望读你代码的人能记住所有优先级规则。多写一对括号,少掉一次头发。
四、关键字与标识符的命名规则
1. 关键字(Keywords)
关键字是JavaScript语言预留的“专有名词”,比如function、let、const、if、for等等。它们有特殊用途,你不能拿它们当变量名。
// function 是关键字,用来定义函数
function 计算乘积(参数1, 参数2) {
let 结果 = 参数1 * 参数2;
console.log("乘积是:" + 结果);
}
// 调用函数
计算乘积(6, 7);
输出:
乘积是:42
2. 标识符(Identifiers)
标识符就是你给变量、函数、属性起的名字。JavaScript的命名规则实很宽松:
-
可以以字母、下划线(
_)或美元符号($)开头。 -
后续字符可以是字母、数字、下划线或美元符号。
-
不能以数字开头。
驼峰命名法(Camel Case)是社区约定俗成的风格:
// 推荐的命名方式
let 代码号教程列表 = []; // 单词之间用下划线(个人风格也可)
let totalStudents = 120; // 驼峰:第一个单词小写,后面单词首字母大写
let getCourseDetail = function() {}; // 函数名用动词开头
个人见解:虽然JavaScript允许使用中文作为变量名(比如上面的
代码号教程列表),但在团队协作中不建议这样做,因为他编辑器或工具对非ASCII字符支持不够好。保持英文命名,并在必要时加注释,是更稳妥的做法。
五、代码注释——写给未来的自己看
注释不会被浏览器执行,它们是写给人看的。写注释是一种修养。
单行注释:用//开头,直到行尾。
多行注释:用/*开头,*/结尾。
// 这是单行注释:下面这行代码初始化计数器
let 访问次数 = 0;
/*
这是多行注释块
代码号教程:JavaScript语法入门
作者联系方式:alan@ebingou.cn
创建日期:2025年3月
*/
function 增加访问() {
访问次数++;
console.log("当前访问量:" + 访问次数);
}
增加访问();
输出:
当前访问量:1
个人见解:初学者往往不爱写注释,觉得“代码本身就是注释”。等你三个月后再回头看自己写的代码,就知道注释有多重要了。我建议:写函数时说明它的作用;写复杂逻辑时说明你的思路;写临时解决方案时说明为什么这么写。但也不要过度注释——很明显的事情(比如
i++// i加1)就不需要注释。
六、数据类型与函数简介
JavaScript是动态类型语言,意思是同一个变量可以先后存放不同类型的数据。
基本数据类型:Number(数字)、String(字符串)、Boolean(布尔值)、Undefined、Null等。
引用数据类型:Object(对象)、Array(数组)、Function(函数)等。
// 代码号示例:多种数据类型
let 课程名称 = "JavaScript语法"; // String
let 学习人数 = 1250; // Number
let 是否付费 = true; // Boolean
let 课程标签 = ["基础", "前端", "入门"]; // Array(数组,属于对象类型)
let 讲师信息 = { // Object
姓名: "陈老师",
经验: "8年",
邮箱: "chen@ebingou.cn"
};
console.log(课程名称 + ",学习人数:" + 学习人数);
console.log("课程标签:", 课程标签);
console.log("讲师姓名:" + 讲师信息.姓名);
输出:
JavaScript语法,学习人数:1250 课程标签: [ '基础', '前端', '入门' ] 讲师姓名:陈老师
函数(Function)——代码复用的基石
函数让你可以把一段逻辑打包起来,需要的时候反复调用。
// 定义一个函数
function 计算学习进度(已学章节, 总章节) {
let 进度 = (已学章节 / 总章节) * 100;
return 进度; // return 后面的是函数的输出
}
// 调用函数
let 我的进度 = 计算学习进度(5, 20);
console.log("当前学习进度:" + 我的进度 + "%");
输出:
当前学习进度:25%
个人见解:函数命名时建议用动词开头,比如
get、set、calc、check,这样看到名字就知道它是干什么的。return语句也很关键——如果不写return,函数执行后会返回undefined。
七、Unicode字符集——语言的容器
JavaScript内部使用Unicode字符集,这意味着你可以在字符串里放入几乎任何语言的文字,甚至是表情符号。
// Unicode示例
let 问候语 = "你好,世界!