Post
理解JavaScript核心概念:科学计数法、闭包与原型链原理
JavaScript 基础概念解析
概述
本文围绕 JavaScript 语言中的核心语法特性展开,重点解析科学计数法、余数运算、特殊值(Infinity/NaN)、转义字符、函数定义方式、闭包机制、作用域规则、高阶函数及原型链继承等基础概念,帮助开发者理解语言底层原理与使用边界。
核心概念
科学计数法
JavaScript 支持科学计数法表示数值,格式为 数字e指数,其中 e 后的数值表示 10 的幂次。例如:
10e2等价于 1000(10 × 10²)15e5等价于 1,500,000(15 × 10⁵)
该表示法适用于处理极大或极小的数值,但需注意精度丢失问题。
余数运算与特殊值
- 余数运算符
%:计算两个数相除的余数,如5 % 2结果为 1。 - 特殊值:
Infinity:表示正无穷大(如1 / 0)。-Infinity:表示负无穷大(如-1 / 0)。NaN:表示“非数字”(如parseInt("abc"))。
这些值在运算中需通过isNaN()或Number.isNaN()进行判断。
转义字符
JavaScript 中使用反斜杠 \ 转义特殊字符:
\n:换行符\t:制表符\\:表示单个反斜杠
转义字符常用于字符串中包含引号或控制字符的场景。
函数与作用域
函数定义方式
JavaScript 支持三种函数定义方式:
- 函数表达式:
const funcName = function() {} - 函数声明:
function funcName() {} - 箭头函数:
const funcName = () => {}
箭头函数无自有this,适合用于回调或闭包场景。
闭包与作用域
- 闭包:函数能够访问并记住其词法作用域,即使该函数在其作用域外执行。例如:
function outer() { let x = 10; return function() { return x; }; } const closure = outer(); // closure 保留了 outer 的 x 变量 - 作用域规则:
var声明的变量具有函数作用域或全局作用域,存在变量提升(hoisting)。let/const声明的变量具有块级作用域,不存在提升。
高阶函数与原型链
高阶函数
高阶函数指以其他函数为参数或返回函数的函数,例如:
Array.prototype.map()setTimeout()
这种设计支持函数式编程,但需注意回调地狱问题。
原型链继承
JavaScript 对象通过原型链继承属性和方法:
- 每个对象都有
__proto__指向其原型。 String.prototype是字符串实例的原型,Object.prototype是所有对象的终极原型。
例如:
String.prototype === Object.getPrototypeOf(""); // true
Object.prototype === Object.getPrototypeOf({}); // true
原型链实现继承,但可能导致属性查找性能问题,需合理设计原型结构。
注意事项
- 特殊值处理:
NaN不等于自身(NaN !== NaN),需用Number.isNaN()判断。 - 作用域陷阱:
var声明的变量可能因提升导致意外行为,建议优先使用let/const。 - 原型链污染:避免直接修改
Object.prototype,可能引发兼容性问题。
总结
本文梳理了 JavaScript 的核心语法特性,涵盖数值表示、运算规则、函数机制及继承模型。理解这些基础概念有助于编写更健壮的代码,但需注意语言特性的边界(如 NaN 的行为、原型链的性能影响等)。实际开发中,建议结合具体场景选择合适语法。