JavaScript 基础语法与类型系统详解

作者:开源拾贝时间:2026-10-30 14:10:19浏览:109

本文系统梳理 JavaScript 基础语法,涵盖变量声明提前的原理、基本类型与包装对象的交互机制,以及字符串、数字与对象之间的自动转换规则。详细解析 NaN 判断、位运算逻辑及 in 与 instanceof 运算符用法,帮助开发者深入理解 JS 类型系统的底层行为。

JavaScript 基础语法与变量声明

基础语法、类型、变量

非数字值判断方法

针对非数字值的判断,需特别注意 Infinity 和 NaN 的特性,因为它们不等于任何值,甚至不等于自身。

第一种方法是通过 x != x 进行判断,仅当 x 为 NaN 时该表达式返回 true。

第二种方法是使用 isNaN(x),当 x 为 NaN 或非数字值时,该函数返回 true。

第三种方法是使用 isFinity(x),当 x 不是 NaN、Infinity 或 -Infinity 时,该函数返回 true。

包装对象机制

虽然字符串、数字和布尔值本身不是对象,且其属性为只读,但 JavaScript 允许像操作对象一样引用它们的属性和方法。

其原理是 JavaScript 会临时构造一个包装对象(String、Number 或 Boolean),通过该临时对象调用属性和方法。这些操作仅影响临时对象,随后被销毁,因此不会改变原始数据。

可以显式构造包装对象,其值与原数据通过 '==' 比较相等,但通过 '===' 比较时类型不同。

类型转换规则

数字 a 转换为字符串的方法如下:

a.toString(n),其中 n 表示进制。

a.toFixed(i)、a.toExponential(i) 和 a.toPrecision(j),其中 i 代表小数位数,j 代表要显示的总位数。

字符串s 转 十进制数字:(忽略前置的空格,尽可能多的转换数字,忽略后面的非数字内容,其中'0X'、'0x'开头的则把它当着16进制数来转换)

parseInt(s,[n]),其中 n 为可选参数,表示将 s 视为 n 进制数并转换为十进制数。

parseFloat(s,[n])。

对象自动转换为字符串的步骤如下:

1. 若存在 toString() 方法且能返回原始值,则调用该方法,并将返回的原始值转换为字符串;

2. 若第一步无效,则调用 valueOf(),将返回的原始值转换为字符串;

3. 若前两步均无效,则抛出类型错误异常。

对象自动转换为数字的步骤如下:

1. 若存在 valueOf(),则调用该方法,将返回的原始值转换为数字并返回该数字;

2. 若第 1 步无效,则尝试调用 toString(),将返回的原始值转换为数字并返回该数字;

3. 若第 1、2 步均无效,则抛出类型错误异常。

Date 对象是上述转换规则的例外情况。

变量声明提前与位运算

变量声明提前:

当调用未声明的变量时,编译器会将变量的声明部分提前,而将初始化部分保留在原位。

对于重复声明的变量,局部声明将覆盖外部声明。


var s1 = 'ggggg';
function f() {
console.log(s1); //s1 == undefined
var s1 = 'cccccc';
console.log(s1); //s1 == 'cccccc'
}

位运算包括:&、|、^、~。

&:按位与,对左右两个整型操作数执行 AND 操作,仅当对应位都为 1 时,结果为 1。

|:按位或,若对应位有一个为 1,则结果为 1。

^:按位异或,若对应位一样则为 0,不一样则为 1。

~:按位取反,是一元运算符,对所有位取反,相当于改变符号并减 1。

(n 是 0~31 之间)

<<n:所有位左移 n 位,即将值乘以 2 的 n 次方,舍弃最左 n 位,用 0 来补充右边 n 位。

>>n:所有位右移 n 位,忽略右边溢出位,填补左边位由原操作数决定,结果相当于除 2 的 n 次方并舍弃余数。例如 7>>1=3,-7>>1=-4。

<<<n:同 <<,只是用 0 来填补左边位。

字符串比较与运算符优先级

字符串之间的比较大小:

JavaScript 字符串是由 16 位整数值组成的字符系列,字符串比较的是它们的字符的数值,大小写字符的数值不同。

比较运算符偏爱数字,只要有一个操作数为数字,就做数字运算;只有当两个都为字符串时,才做字符串比较。而 '+' 运算符则偏爱字符串,只要有一个操作数为字符串,就做字符串连接运算。

对象属性检查与真假值

x in p

检查对象 p 内是否存在属性 x,包括方法。

a instanceof A

检查对象 a 是否是类 A 的一个实例,包含对其父类的检测。假值包括:false、null、undefined、0、-0、NaN、""。

真值:除了以上的值,其他值均为真值。

对象:除了字符串、数字、true、false、null、undefined 之外,其他值都是对象。

以上就是小编为大家带来的 javascript 学习笔记_浅谈基础语法,类型,变量的全部内容了,希望对大家有所帮助,多多支持本站~

作者最新文章