本文系统梳理JavaScript核心基础,涵盖ECMAScript 6标准背景、原始值与对象的比较差异、typeof与instanceof类型判断机制,以及假值列表。重点解析二元逻辑运算符的短路特性,并通过IIFE解决循环中闭包共享变量的经典问题,帮助开发者巩固JS底层原理。
JavaScript学习背景与ECMAScript标准
学习JavaScript已有一段时间,此前缺乏系统性的梳理。值此毕业之际,为弥补知识盲区并养成技术写作习惯,特此整理这门语言的核心要点。撰写技术博客被视为程序员的一项重要实践,有助于知识的沉淀与分享。
1.1 背景知识
初学者常混淆JavaScript与ECMAScript的关系。实际上,ECMAScript是JavaScript的官方规范标准。2015年6月17日,ECMAScript 6(即ES2015)正式版本发布,标志着语言标准的重大更新。
1.2 语法规范
此处省略常规基础语法介绍,直接聚焦关键特性。
原始值、对象与类型判断机制
核心要点强调:
1. 原始值与对象的区别:原始值包括布尔值、数字、字符串、null和undefined,其余均为对象。两者主要区别在于比较方式:每个对象拥有唯一标识,仅等于自身;而原始值按值比较。
var obj1={};
var obj2={};
alert(obj1 === obj2);
//false
alert(obj1===obj1);
//true
var prim1=123;
var prim2=123;
alert(prim1===prim2);
//true
2. 利用typeof和instanceof对值进行分类判断。
typeof运算符详解
| 操作数 | 结 果 |
| undefined | 'undefined' |
| null | object |
| 布尔值 | boolean |
| 数字 | number |
| 字符串 | string |
| 函数 | function |
| 所有其他的常规值 | object |
| 引擎创建的值 | JS引擎可以被允许创建一些值,且typeof的结果可以返回任意字符串 |
假值列表与逻辑运算符短路特性
3. 布尔值判定:
假值(Falsy)包括:undefined、null、false、-0、NaN和空字符串''。
4. 二元逻辑运算符:JavaScript中的逻辑运算符采用短路求值策略。若第一个操作数足以确定结果,则不再评估第二个操作数。与运算符(&&)在第一个操作数为假值时返回该值;或运算符(||)在第一个操作数为真值时返回该值。
IIFE解决闭包共享变量问题
5. IIFE(立即执行函数表达式):
IIFE用于引入新的作用域,主要作用是消除由闭包(函数及其关联的周围作用域变量)导致的无意共享问题。
示例说明:
var result=[];
for(var i=0;i<5;i++)
{
result.push(function(){return i;});//(1)
}
console.log(result[1]()); //5 (not 1)
console.log(result[3]()); //5 (not 3)
标记为(1)的代码行返回值始终为变量i的当前值,而非函数创建时的快照。循环结束后i值为5,导致数组中所有函数均返回5。若需让函数捕获当前i值的快照,应使用IIFE。
for(var i=0;i<5;i++)
{
(function (){
var i2=i;
result.push(function(){return i2});
}()
) ;
}
上述内容整理了以往易被忽视或误解的知识点,旨在补充和完善JavaScript基础知识体系。
以上为JavaScript基础重点的全部内容,供读者参考学习,欢迎支持。