下载工作台
前端开发入门

JavaScript 基础语法

试读上半部分 · 解锁后可读全文

第 8 章 · JavaScript 基础语法

本章目标:掌握 JavaScript 变量、类型系统、条件与循环、函数、数组方法、严格模式与调试技巧,为 academy-demo 编写可测试工具函数与后续 DOM 交互(ch09)打基础。

学时建议:2.5 小时(含 50 分钟编码与控制台调试)

前置:frontend-web ch01~03;能在浏览器打开控制台(F12 → Console)。


8.1 引入方式与项目结构

academy-demo/js/
├── utils.js   # 本章:纯函数工具库
└── app.js     # 入口:初始化(ch09 绑定事件)
<script src="js/utils.js" defer></script>
<script src="js/app.js" defer></script>

defer:不阻塞 HTML 解析,按序执行,适合操作 DOM 的脚本。

层次技术本章范围
结构HTML<script> 引入
行为JavaScript变量、逻辑、函数、数组
数据fetch APIch10 异步实战

8.2 严格模式

'use strict';

// 严格模式下会报错:
// mistypedVar = 1;           // ReferenceError
// function fn(a, a) {}       // SyntaxError(重复参数)
非严格严格模式
未声明变量变全局属性抛出 ReferenceError
普通函数 this 为全局对象独立调用时为 undefined

academy-demo 约定utils.jsapp.js 首行均写 'use strict';


8.3 变量声明

const SITE_NAME = 'academy-demo';  // 推荐默认
let activeFilter = 'all';           // 需要重新赋值时
// var —— 已不推荐
关键字重新赋值作用域
const绑定不可变块级
let可以块级

const 对象/数组仍可改属性,不能整体重新赋值:course.hours = 10 ✅,course = {} ❌。


8.4 类型系统

类型示例typeof
string'前端'"string"
number199"number"
booleantrue"boolean"
undefined未赋值"undefined"
nullnull"object"(历史 bug,用 === null
object{}[]"object"
const price = 199;
const tags = ['HTML', 'CSS', 'JS'];
const meta = { name: '小明', level: '入门' };

Array.isArray(tags);  // true
typeof tags;          // "object"

比较与转换:始终用 ===Number('42')String(199) 显式转换。实用语法:course?.teacher?.name ?? '待公布'


8.5 条件与循环

const courses = [
  { id: 1, title: 'HTML 基础', level: '入门', hours: 12 },
  { id: 2, title: 'CSS Flex', level: '进阶', hours: 8 },
  { id: 3, title: 'JS 语法', level: '入门', hours: 15 },
];

let totalHours = 0;
for (const course of courses) {
  if (course.level === '入门') totalHours += course.hours;
}

function badgeByLevel(level) {
  switch (level) {
    case '入门': return 'badge-beginner';
    case '进阶': return 'badge-advanced';
    default: return 'badge-default';
  }
}
循环适用
for...of数组、字符串
while条件未知次数
数组方法声明式处理(见 8.7)

8.6 函数

function greet(name) {
  return `你好,${name},欢迎来到 ${SITE_NAME}`;
}

const formatPrice = (n) => `¥${Number(n).toFixed(2)}`;
const add = (a, b) => a + b;

function listCourses(courses, prefix = '【课程】') {
  return courses.map((c) => `${prefix}${c.title}`);
}
场景推荐
工具函数、纯计算箭头或 function
需要自己的 this普通 function
短回调箭头函数

以下内容需解锁后阅读

试读已结束。解锁本章 ¥5.00,或开通年度会员畅读全部教程。
年度会员 ¥199.00/年; 小紫 AI 工作台有效会员 ¥99.00/年

正文仅在服务端鉴权后下发,未付费无法获取下半部分内容。