JavaScript 作为网页交互的核心语言,其基础语法是入门前端开发的必备知识。本文将系统梳理 JS 核心基础语法。

一、变量与数据类型

JavaScript 是弱类型语言,变量类型可动态变化,通过 letconstvar 声明(推荐优先使用 letconst)。

基本数据类型:字符串(String)、数字(Number)、布尔值(Boolean)、空(Null)、未定义(Undefined)、符号(Symbol)
引用数据类型:对象(Object)、数组(Array)、函数(Function)

// 变量声明示例
let userName = "张三"; // 字符串
const age = 25; // 数字(const 声明常量,不可修改)
let isStudent = false; // 布尔值
let emptyValue = null; // 空值
let undef; // 未定义(默认值)
const uniqueKey = Symbol("id"); // 唯一标识符

// 类型检测
console.log(typeof userName); // "string"
console.log(typeof age); // "number"
console.log(emptyValue === null); // true(typeof null 会返回"object",需特殊判断)

二、函数定义与调用

函数是 JS 的核心模块单元,可通过函数声明、函数表达式、箭头函数等方式定义。

1. 基本定义与调用

// 1. 函数声明
function add(a, b) {
  return a + b;
}
console.log(add(2, 3)); // 输出:5

// 2. 函数表达式
const multiply = function(a, b) {
  return a * b;
};
console.log(multiply(2, 3)); // 输出:6

// 3. 箭头函数(简洁语法,无this绑定)
const subtract = (a, b) => a - b;
console.log(subtract(5, 2)); // 输出:3

2. 自执行函数实现装饰器

自执行函数(IIFE)可立即执行,常用来实现简单装饰器(增强函数功能):

// 自执行函数作为装饰器,给原函数添加日志功能
const withLog = (fn) => {
  return function(...args) {
    console.log(`调用函数:${fn.name},参数:${args}`);
    const result = fn(...args);
    console.log(`返回结果:${result}`);
    return result;
  };
};

// 原函数
function sum(a, b) {
  return a + b;
}

// 使用装饰器增强函数
const sumWithLog = withLog(sum);
sumWithLog(3, 4); 
// 输出:
// 调用函数:sum,参数:3,4
// 返回结果:7

三、判断语句

JS 提供多种条件判断方式,满足不同场景需求。

1. 比较运算符

const num1 = 5;
const num2 = "5";

console.log(num1 == num2); // true(== 会自动转换类型)
console.log(num1 === num2); // false(=== 严格比较类型和值)
console.log(num1 !== num2); // true(不全等于)

2. 三目运算

简洁的二选一判断:

const score = 85;
const result = score >= 60 ? "及格" : "不及格";
console.log(result); // 输出:及格

3. 逻辑运算符

const hasMoney = true;
const hasTime = false;

// &&(与:全为true才返回true)
console.log(hasMoney && hasTime); // false

// ||(或:有一个true就返回true)
console.log(hasMoney || hasTime); // true

// !(非:取反)
console.log(!hasMoney); // false

4. switch case

多条件匹配:

const day = 3;
let dayName;

switch (day) {
  case 1:
    dayName = "周一";
    break;
  case 2:
    dayName = "周二";
    break;
  case 3:
    dayName = "周三";
    break;
  default:
    dayName = "未知";
}
console.log(dayName); // 输出:周三

四、数组

数组是有序集合,用于存储多个数据,支持丰富的操作方法。

1. 创建方式

// 1. 字面量创建(推荐)
const fruits = ["苹果", "香蕉", "橙子"];

// 2. 实例化对象
const numbers = new Array(1, 2, 3, 4);

console.log(fruits[0]); // 输出:苹果(通过下标访问,从0开始)
console.log(numbers.length); // 输出:4(获取长度)

2. 常用操作方法

const arr = [10, 20, 30];

// 从尾部添加/删除
arr.push(40); // 添加元素到末尾,返回新长度:4 → arr变为[10,20,30,40]
arr.pop(); // 删除最后一个元素,返回删除值:40 → arr变为[10,20,30]

// splice:添加/删除/替换元素(核心方法)
// 语法:splice(起始索引, 删除数量, 新增元素1, 新增元素2...)
arr.splice(1, 1); // 从索引1开始,删除1个元素 → arr变为[10,30]
arr.splice(1, 0, 25, 28); // 从索引1开始,删除0个元素,插入25和28 → arr变为[10,25,28,30]

console.log(arr); // 输出:[10, 25, 28, 30]

五、循环语句

用于重复执行代码块,常见有 forwhilefor...of 等。

// 1. for循环
const arr = [1, 2, 3];
for (let i = 0; i < arr.length; i++) {
  console.log(arr[i]); // 依次输出:1、2、3
}

// 2. while循环
let count = 0;
while (count < 3) {
  console.log("计数:" + count);
  count++; // 输出:计数:0、计数:1、计数:2
}

// 3. for...of(遍历数组元素,更简洁)
for (const item of arr) {
  console.log(item); // 依次输出:1、2、3
}

六、格式化字符串

使用反引号(`)和 ${} 包裹变量,实现字符串拼接:

const name = "李四";
const age = 30;

// 传统拼接(繁琐)
const str1 = "姓名:" + name + ",年龄:" + age;

// 模板字符串(简洁)
const str2 = `姓名:${name},年龄:${age}`;
const str3 = `计算结果:${10 + 20}`; // 支持表达式

console.log(str2); // 输出:姓名:李四,年龄:30
console.log(str3); // 输出:计算结果:30

七、对象

对象是键值对集合,用于描述复杂数据(如用户信息、商品属性)。

// 创建对象
const user = {
  name: "王五",
  age: 28,
  isAdmin: false,
  hobbies: ["读书", "跑步"],
  sayHello: function() { // 对象方法
    console.log(`你好,我是${this.name}`);
  }
};

// 访问属性
console.log(user.name); // 输出:王五
console.log(user["age"]); // 输出:28(另一种访问方式)

// 调用方法
user.sayHello(); // 输出:你好,我是王五

// 修改属性
user.age = 29;
console.log(user.age); // 输出:29

八、定时器

用于延迟或周期性执行代码,核心API有 setTimeoutsetInterval 及关闭方法。

// 1. setTimeout:延迟执行一次
const timer1 = setTimeout(() => {
  console.log("2秒后执行");
}, 2000); // 2000毫秒=2秒

// 2. setInterval:周期性执行(每隔1秒)
const timer2 = setInterval(() => {
  console.log("每隔1秒执行一次");
}, 1000);

// 关闭定时器(通常在某个条件下执行)
setTimeout(() => {
  clearTimeout(timer1); // 关闭延迟定时器
  clearInterval(timer2); // 关闭周期定时器
  console.log("定时器已关闭");
}, 5000); // 5秒后关闭所有定时器

九、异步编程

JS 是单线程语言,通过异步编程处理耗时操作(如网络请求),核心方案有 Promiseasync/await

1. Promise 基础

// 创建Promise
const fetchData = new Promise((resolve, reject) => {
  // 模拟异步操作(如接口请求)
  setTimeout(() => {
    const success = true;
    if (success) {
      resolve("获取数据成功:{name: '测试数据'}"); // 成功状态
    } else {
      reject("获取数据失败"); // 失败状态
    }
  }, 1000);
});

// 使用Promise
fetchData
  .then(data => {
    console.log(data); // 成功时执行
  })
  .catch(error => {
    console.error(error); // 失败时执行
  });

2. async/await(Promise的语法糖)

// 定义异步函数
async function getData() {
  try {
    const result = await fetchData; // 等待Promise完成
    console.log("async/await获取结果:", result);
  } catch (error) {
    console.error("async/await错误:", error);
  }
}

// 调用异步函数
getData();

十、JSON 处理

JSON 是数据交换的标准格式,JS 提供内置方法转换 JSON 与字符串。

// 1. JSON字符串 → JS对象
const jsonStr = '{"name":"赵六","age":22,"hobbies":["游泳","篮球"]}';
const jsonObj = JSON.parse(jsonStr); // 解析
console.log(jsonObj.name); // 输出:赵六

// 2. JS对象 → JSON字符串
const newJsonStr = JSON.stringify(jsonObj); // 序列化
console.log(newJsonStr); // 输出:{"name":"赵六","age":22,"hobbies":["游泳","篮球"]}

十一、浏览器 Window 对象

Window 是浏览器全局对象,包含多个核心属性,用于操作页面和浏览器。

// 1. document:操作HTML元素
const title = document.title; // 获取页面标题
document.title = "新标题"; // 修改页面标题

// 2. location:操作URL
console.log(location.href); // 获取当前页面URL
// location.href = "https://www.baidu.com"; // 跳转到新页面

// 3. navigator:获取浏览器信息
console.log(navigator.userAgent); // 浏览器标识字符串

// 4. history:操作历史记录
// history.back(); // 后退到上一页
// history.forward(); // 前进到下一页

// 5. screen:屏幕信息
console.log(`屏幕宽度:${screen.width}px`);

总结

JavaScript 基础语法是构建复杂应用的基石,本文涵盖了变量、函数、数组、对象、异步等核心知识点,并通过代码示例直观展示其用法。掌握这些内容后,你可以开始编写简单的交互逻辑,为深入学习 DOM 操作、框架开发(如 React、Vue)打下基础。实践是巩固知识的最佳方式,建议多写多练,逐步积累经验。

Logo

Agent 垂直技术社区,欢迎活跃、内容共建。

更多推荐