JavaScript 基础知识核心笔记:执行机制、变量与作用域详解

月亮慢半拍
月亮慢半拍
发布时间:2026-10-15 | 6人浏览过
原创

本文梳理 JavaScript(常被称为 JScript)的核心基础语法与运行机制。内容涵盖外部脚本的 defer 和 async 加载策略、变量命名规范、基本数据类型转换方法,并深入解析了 null 与 undefined 的逻辑关系以及栈内存与堆内存对不同类型的存储机制。

JavaScript 脚本加载与基本语法

JavaScript 是一门解释型语言,浏览器作为解释器执行代码。需要明确的是,JS 引擎并非逐行执行,而是以块(block)或段为单位进行分析与执行。

第1步:理解脚本延迟与异步加载

在处理 HTML 中的 <script> 标签时,需根据场景选择合适的加载属性:

  • 延迟脚本 (defer):HTML4.01 引入的属性。设置该属性的脚本会立即下载,但会推迟到整个页面解析完毕后执行。这不会影响页面的初始构建,适用于依赖 DOM 结构的脚本。在 XHTML 中需严格指定为 defer="defer"。
  • 异步脚本 (async):HTML5 引入的属性。脚本被下载后即刻执行,不保证按文档顺序执行。该属性仅适用于外部脚本文件,旨在实现非阻塞加载以提升页面性能。
    注意:使用 async 的脚本不应在加载期间操作 DOM,因为其执行时机不确定。

第2步:掌握变量命名规则与前缀规范

JavaScript 是区分大小写的语言,所有标识符(变量名、函数名等)均受此约束。在使用 var 关键字声明变量时,建议遵循以下规范以提高可读性:

推荐使用驼峰式命名法,并结合类型前缀。常见的局部变量前缀规范如下:

  • s:String(字符串),如 sName;
  • n:Number(数字),如 nCount;
  • b:Boolean(逻辑),如 bHasLogin;
  • a:Array(数组),如 aList;
  • r:RegExp(正则表达式),如 rEmail;
  • f:Function(函数),如 fInit;
  • o:Object(对象),如 oButton;
  • g:Global(全局变量),如 gUserName。

命名限制:首字符不能是数字,不能包含空格,且不能使用保留字(如 var)。若声明了变量但未赋值,其默认值为 undefined。

数据类型与内存机制深度解析

JScript 的数据类型主要分为原始类型(基本类型)和引用类型。理解它们的区别对于内存管理至关重要。

基本类型存储在栈(Stack)中,直接保存值。
引用类型存储在堆(Heap)中,变量保存的是指向对象的指针。

核心数据类型详解

  1. 字符串 (String):支持单引号和双引号,Unicode 编码为标准。建议使用双引号。
  2. 数值 (Number):JS 内部统一将整数和浮点数表示为浮点值。
  3. 布尔 (Boolean):仅有 true 和 false 两个值。
  4. Null:表示“空对象”指针,通常用于清除变量内容。
    注意:typeof null 返回 object,这是 JS 早期实现的遗留特性。
  5. Undefined:表示变量已声明但未赋值,或对象属性不存在。

    对比测试:
alert(typeof undefined); // "undefined"
alert(typeof null);      // "object"
alert(null == undefined); // true (弱等于)
alert(null === undefined); // false (强等于,类型不同)

上述图片展示了堆与栈的内存模型:

  • 栈内存 (Stack):存放固定大小的基本数据类型值,访问速度快。
  • 堆内存 (Heap):存放动态分配的引用对象。变量在栈中保存的是一个地址指针。

赋值陷阱演示:
当对引用类型进行赋值时,仅是拷贝了指针地址,而非对象本身。因此,通过新变量修改属性会影响原变量:

var obj1 = new Object();
var obj2 = obj1; // obj2 指向与 obj1 相同的堆内存地址
obj2.name = "lee";
// 此时 obj1.name 也为 "lee"

运算符、类型转换与流程控制

第1步:显式类型转换

虽然 JS 支持自动类型强制转换(如数值与字符串相加),但为了代码稳健性,推荐使用显式转换函数:

  • parseInt(str):解析字符串开头的整数,遇非数字字符停止。无效输入返回 NaN。
  • parseFloat(str):解析字符串开头的浮点数,同样遇到非数字字符停止。
  • eval():将字符串作为 JS 表达式执行并返回结果。

第2步:流程控制最佳实践

在使用 for...in 或 if 语句时,即便只有一条语句,也强烈建议始终使用花括号 {} 包裹代码块。

// 不推荐
if(args)
  alert(args); 

// 推荐
if(args){
  alert(args);
}

以上思维导图总结了流程控制与函数的核心逻辑。函数由事件驱动或被调用时执行,分为语言内置函数和用户自定义函数。函数参数可省略,但括号不可省。

以上就是 JavaScript 基础知识的详细内容,更多关于 JavaScript 学习入门的资料请关注本站其它相关文章!

相关标签:

本站声明

本文内容仅供参考,不代表本站观点。转载或引用请注明出处。如发现内容问题,请通过联系我们页面反馈。

Python 相关产品和应用

全部下载

专题列表