JavaScript语法基础

JavaScript语法基础是学习JavaScript的第一步,包括变量声明、数据类型、运算符和表达式等内容。

变量

变量是用于存储数据的容器,在JavaScript中可以使用varletconst关键字声明变量。

var声明

var是ES5及之前版本的变量声明方式:

javascript
var name = "John";
var age = 30;

特点:

  • 函数作用域
  • 变量提升
  • 可以重复声明

let声明

let是ES6引入的块级作用域变量声明方式:

javascript
let name = "John";
let age = 30;

特点:

  • 块级作用域({}内)
  • 不存在变量提升
  • 不能在同一作用域重复声明

const声明

const用于声明常量,值一旦赋值就不能更改:

javascript
const PI = 3.14159;
const NAME = "JavaScript";

特点:

  • 块级作用域
  • 不存在变量提升
  • 必须初始化赋值
  • 基本类型值不可修改
  • 引用类型(对象、数组)的内容可以修改

数据类型

JavaScript有8种数据类型,分为基本类型和引用类型:

基本类型

  1. 字符串(String):文本数据,用单引号或双引号包裹

    javascript
    let name = "John";
    let message = 'Hello, World!';
    
  2. 数字(Number):整数或浮点数

    javascript
    let age = 30;
    let price = 9.99;
    
  3. 布尔值(Boolean)truefalse

    javascript
    let isActive = true;
    let isDone = false;
    
  4. 空值(Null):表示一个空的或不存在的引用

    javascript
    let user = null;
    
  5. 未定义(Undefined):表示变量声明但未赋值

    javascript
    let x;
    console.log(x); // undefined
    
  6. 符号(Symbol):ES6引入的唯一且不可变的数据类型

    javascript
    const sym1 = Symbol("description");
    const sym2 = Symbol("description");
    console.log(sym1 === sym2); // false
    
  7. 大整数(BigInt):ES11引入的任意精度整数

    javascript
    const bigNumber = 123456789012345678901234567890n;
    

引用类型

  1. 对象(Object):复杂数据结构
    javascript
    let person = {
        name: "John",
        age: 30,
        isActive: true
    };
    

数据类型检测

typeof运算符

typeof运算符用于检测变量的数据类型:

javascript
console.log(typeof "Hello"); // string
console.log(typeof 42); // number
console.log(typeof true); // boolean
console.log(typeof null); // object (这是一个历史遗留问题)
console.log(typeof undefined); // undefined
console.log(typeof Symbol("sym")); // symbol
console.log(typeof 123n); // bigint
console.log(typeof {}); // object
console.log(typeof []); // object (数组是特殊的对象)
console.log(typeof function(){}); // function

instanceof运算符

instanceof运算符用于检测对象的构造函数:

javascript
console.log([] instanceof Array); // true
console.log({} instanceof Object); // true
console.log(new Date() instanceof Date); // true

运算符

JavaScript支持多种运算符,用于执行不同类型的操作。

算术运算符

用于执行数学运算:

运算符 描述 示例
+ 加法 5 + 3 // 8
- 减法 5 - 3 // 2
* 乘法 5 * 3 // 15
/ 除法 5 / 3 // 1.666…
% 取模(余数) 5 % 3 // 2
++ 自增 let x = 5; x++; // 6
自减 let x = 5; x–; // 4
** 幂运算 5 ** 3 // 125

赋值运算符

用于给变量赋值:

运算符 描述 示例
= 简单赋值 let x = 5;
+= 加后赋值 x += 3; // 等同于 x = x + 3
-= 减后赋值 x -= 3; // 等同于 x = x - 3
*= 乘后赋值 x *= 3; // 等同于 x = x * 3
/= 除后赋值 x /= 3; // 等同于 x = x / 3
%= 取模后赋值 x %= 3; // 等同于 x = x % 3
**= 幂运算后赋值 x **= 3; // 等同于 x = x ** 3

比较运算符

用于比较两个值:

运算符 描述 示例
== 等于(值相等) 5 == “5” // true
=== 严格等于(值和类型都相等) 5 === “5” // false
!= 不等于 5 != “5” // false
!== 严格不等于 5 !== “5” // true
> 大于 5 > 3 // true
< 小于 5 < 3 // false
>= 大于等于 5 >= 5 // true
<= 小于等于 5 <= 3 // false

逻辑运算符

用于逻辑运算:

运算符 描述 示例
&& 逻辑与 true && false // false
|| 逻辑或 true || false // true
! 逻辑非 !true // false

三元运算符

三元运算符是一种条件表达式,格式为:条件 ? 表达式1 : 表达式2

javascript
let age = 18;
let status = age >= 18 ? "成年人" : "未成年人";
// status的值为"成年人"

表达式

表达式是由变量、常量、运算符和函数调用组成的代码片段,它会产生一个值。

算术表达式

javascript
let result = 5 + 3 * 2;
// result的值为11

字符串表达式

javascript
let name = "John";
let greeting = "Hello, " + name;
// greeting的值为"Hello, John"

逻辑表达式

javascript
let isAdult = age >= 18;
let canVote = isAdult && hasCitizenship;

函数调用表达式

javascript
let now = Date.now();
let upperCaseName = name.toUpperCase();

注释

注释用于解释代码,JavaScript支持两种注释方式:

单行注释

使用//开头:

javascript
// 这是一个单行注释
let x = 5; // 这是一个变量声明

多行注释

使用/*开头,*/结尾:

javascript
/*
这是一个多行注释
可以包含多行文本
*/
let y = 10;

命名规范

JavaScript的命名规范:

  1. 变量名:使用驼峰命名法(camelCase)

    javascript
    let userName = "John";
    let userAge = 30;
    
  2. 常量名:使用全大写,单词间用下划线分隔

    javascript
    const MAX_SIZE = 100;
    const API_KEY = "abc123";
    
  3. 函数名:使用驼峰命名法

    javascript
    function calculateSum(a, b) {
        return a + b;
    }
    
  4. 类名:使用帕斯卡命名法(PascalCase)

    javascript
    class User {
        constructor(name, age) {
            this.name = name;
            this.age = age;
        }
    }
    

继续学习:JavaScript控制流程

最后更新:2026-02-08