数据类型与运算符
约 522 字大约 2 分钟
布欧-Lewyon
2026-05-16
首页 › JavaScript › JS 基础 › 数据类型与运算符
七种基本类型
// number:数字(整数+浮点数)
let age = 28;
let price = 19.99;
let infinity = Infinity;
let notANumber = NaN; // 非数字
// string:字符串
let name = '张三';
let greeting = "你好";
let template = `Hello, ${name}!`; // 模板字面量
// boolean:布尔值
let isActive = true;
let isAdmin = false;
// null:空值(主动赋值)
let data = null;
// undefined:未定义(声明未赋值)
let x;
console.log(x); // undefined
// symbol:唯一标识
let sym1 = Symbol('id');
let sym2 = Symbol('id');
console.log(sym1 === sym2); // false
// bigint:大整数
let big = 9007199254740991n;typeof 运算符
typeof 42; // "number"
typeof 'hello'; // "string"
typeof true; // "boolean"
typeof undefined; // "undefined"
typeof null; // "object" ⚠️ 语言 bug
typeof Symbol(); // "symbol"
typeof 123n; // "bigint"
typeof function(){}; // "function"严格相等 vs 抽象相等
// === 严格相等(推荐):不转换类型
1 === '1'; // false
null === undefined; // false
// == 抽象相等:会做类型转换
1 == '1'; // true
null == undefined; // true
// 最佳实践:始终使用 ===运算符
// 算术
console.log(1 + 2); // 3
console.log(10 % 3); // 1(取模)
// 比较
console.log(5 > 3); // true
console.log(5 >= 5); // true
// 逻辑
console.log(true && false); // false
console.log(true || false); // true
console.log(!true); // false
// 空值合并 ??(null/undefined 时才用右侧)
let name = null;
console.log(name ?? '默认值'); // "默认值"
// 可选链 ?.(防止报错)
let user = null;
console.log(user?.name); // undefined(不报错)
// 三元
let age = 20;
let type = age >= 18 ? '成年' : '未成年';类型转换
// 显式转换
Number('123'); // 123
String(123); // "123"
Boolean(1); // true
parseInt('123px'); // 123
parseFloat('3.14'); // 3.14
// 隐式转换(小心陷阱)
'5' - 3; // 2(字符串转数字)
'5' + 3; // "53"(数字转字符串!)
+'123'; // 123(一元 + 转数字)Falsy 值
// 以下值在布尔上下文中为 false:
false
0, -0
'' (空字符串)
null
undefined
NaN
// 其他所有值都为 truthy
if ('false') { /* 这里的字符串 'false' 是 truthy!*/ }小结
| 类型 | 示例 | typeof |
|---|---|---|
| number | 42 | "number" |
| string | "hello" | "string" |
| boolean | true | "boolean" |
| null | null | "object"(bug) |
| undefined | undefined | "undefined" |
