JavaScript 基础知识核心笔记:执行机制、变量与作用域详解
本文梳理 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)中,变量保存的是指向对象的指针。
核心数据类型详解
- 字符串 (String):支持单引号和双引号,Unicode 编码为标准。建议使用双引号。
- 数值 (Number):JS 内部统一将整数和浮点数表示为浮点值。
- 布尔 (Boolean):仅有
true和false两个值。 - Null:表示“空对象”指针,通常用于清除变量内容。
注意:typeof null返回object,这是 JS 早期实现的遗留特性。 - 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 学习入门的资料请关注本站其它相关文章!
本站声明
本文内容仅供参考,不代表本站观点。转载或引用请注明出处。如发现内容问题,请通过联系我们页面反馈。













