JavaScript 基础笔记碎片-数据类型、变量与字符串操作

注意:本篇学习笔记摘录于原网站: JavaScript教程 - 廖雪峰的官方网站
笔记仅作学习留档使用

本篇目录

比较运算符
BigInt
变量
strict模式
字符串
多行字符串
模板字符串
操作字符串

比较运算符

JavaScript允许对任意数据类型做比较:

false == 0; // true
false === 0; // false

比较方式对比:

  • ==:自动转换数据类型后再比较(容易产生意外结果)
  • ===:严格比较,数据类型不一致直接返回 false

建议始终使用 === 进行比较。
注意:引用类型/对象,在使用 === 时,它们比较的是内存地址(引用)

另一些特殊值的比较:

//`NAN`这个特殊的Number与所有其他值都不相等,包括它自己:
NaN === NaN;  // false
isNaN(NaN);   // true - 正确判断方法

//浮点数
1 / 3 === (1 - 2 / 3);  // false
//计算它们之差的绝对值,看是否小于某个阈值
Math.abs(1 / 3 - (1 - 2 / 3)) < 0.0000001;  // true - 正确比较方式

BigInt

JavaScript的Number不区分整数和浮点数,并且JavaScript的整数最大范围不是±2(63),而是±2(53)。BigInt类型可以精确表示比更大的整数,在整数后加一个n,例如9223372036854775808n,或使用BigInt()把Number和字符串转换成BigInt。可以正常进行加减乘除等运算,结果仍然是一个BigInt,但不能把一个BigInt和一个Number放在一起运算::

// 创建 BigInt
const bi1 = 9223372036854775807n;
const bi2 = BigInt(12345);
const bi3 = BigInt("0x7fffffffffffffff");

// 比较
console.log(bi1 === bi3);  // true

// 正常运算
console.log(1234567n + 3456789n);  
console.log(1234567n / 789n);      // 1564n(结果仍为 BigInt)

// 类型混合错误
console.log(1234567n + 3456789); // 会显示Uncaught TypeError: Cannot mix BigInt and other types

变量

变量在JavaScript中就是用一个变量名表示,变量名是大小写英文、数字、$_的组合,且不能用数字开头。变量名也不能是JavaScript的关键字,如ifwhile等。申明一个变量用var语句,比如:

var a; // 申明了变量a,此时a的值为undefined
var $b = 1; // 申明了变量$b,同时给$b赋值,此时$b的值为1
var s_007 = '007'; // s_007是一个字符串
var Answer = true; // Answer是一个布尔值true
var t = null; // t的值是null

// let 声明(现代推荐)
let name = '小明';

变量名也可以用中文,但是,请不要给自己找麻烦。

在JavaScript中,使用等号=对变量进行赋值。可以把任意数据类型赋值给变量,同一个变量可以反复赋值,而且可以是不同类型的变量,但是要注意只能用var申明一次,例如:

var a = 123; // a的值是整数123
a = 'ABC'; // a变为字符串

// 变量输出
console.log(x);  // 推荐:控制台输出
alert(x);        // 不推荐:弹窗干扰

strict模式

如果一个变量没有通过var申明就被使用,那么该变量就自动被申明为全局变量:

i = 10; // 全局变量

在同一个页面的不同的JavaScript文件中,如果都不用var申明,恰好都使用了变量i,将造成变量i互相影响,产生难以调试的错误结果。

使用var申明的变量则不是全局变量,它的范围被限制在该变量被申明的函数体内(函数的概念将稍后讲解),同名变量在不同的函数体内互不冲突。在strict模式下运行的JavaScript代码,强制通过var申明变量,未使用var申明变量就使用的,将导致运行错误。启用strict模式的方法是在JavaScript代码的第一行写上:

'use strict';
//不支持strict模式的浏览器会把它当做一个字符串语句执行,支持strict模式的浏览器将开启strict模式运行JavaScript。

字符串

是用''""括起来的字符表示。如果'本身也是一个字符,那就可以用""括起来;如果字符串内部既包含'又包含"就用转义字符\来标识,比如:

'I\'m \"OK\"!'; // I'm "OK"!

转义字符\可以转义很多字符:

//`\n`表示换行
//`\t`表示制表符

`\\`; //字符`\`本身也要转义,所以`\\`表示的字符就是`\`。

//ASCII字符以`\x##`形式的十六进制表示
'\x41'; // 完全等同于 'A'

//用`\u####`表示一个Unicode字符:
'\u4e2d\u6587'; // 完全等同于 '中文'

多行字符串

多行字符串用\n写起来比较费事,有一种多行字符串的表示方法(ES6标准新增),用反引号...表示:

`这是一个
多行
字符串`;

反引号在键盘的ESC下方,数字键1的左边:

┌─────┐ ┌─────┬─────┬─────┬─────┐
│ ESC │ │ F1  │ F2  │ F3  │ F4  │
└─────┘ └─────┴─────┴─────┴─────┘
┌─────┬─────┬─────┬─────┬─────┐
│  ~  │  !  │  @  │  #  │  $  │
│  `  │  1  │  2  │  3  │  4  │
└─────┴─────┴─────┴─────┴─────┘

模板字符串

要把多个字符串连接起来,可以用+号连接:

let name = '小明';
let age = 20;
let message = '你好, ' + name + ', 你今年' + age + '岁了!';
alert(message);//显示:你好, 小明, 你今年20岁了!

(ES6新增)或者一种模板字符串,它会自动替换字符串中的变量:

let name = '小明';
let age = 20;
let message = `你好, ${name}, 你今年${age}岁了!`;
alert(message);

操作字符串

要获取字符串某个指定位置的字符,使用下标操作,索引号从0开始;字符串是不可变的,如果对字符串的某个索引赋值,不会有任何错误,但是,也没有任何效果

let s = 'Hello, world!';

s[0]; // 'H'
s[6]; // ' '
s[7]; // 'w'
s[12]; // '!'
s[13]; // undefined 超出范围的索引不会报错,但一律返回undefined

let s = 'Test';
s[0] = 'X';
console.log(s); // s仍然为'Test'

改变字符串有一些常用方法,单调用这些方法本身——不会改变原有字符串的内容,而是返回一个新字符串:

//1.toUpperCase():字符串全部变为大写
let s = 'Hello';
s.toUpperCase(); // 返回'HELLO'

//2.toLowerCase():字符串全部变为小写
let s = 'Hello';
let lower = s.toLowerCase(); // 返回'hello'并赋值给变量lower
lower; // 'hello'

//3.indexOf():搜索指定字符串出现的位置
let s = 'hello, world';
s.indexOf('world'); // 返回7
s.indexOf('World'); // 没有找到指定的子串,返回-1


//4.substring():返回指定索引区间的子串
let s = 'hello, world'
s.substring(0, 5); // 从索引0开始到5(不包括5),返回'hello'
s.substring(7); // 从索引7开始到结束,返回'world'

posted @ 2025-11-18 09:58  qiqimk  阅读(32)  评论(0)    收藏  举报