JavaScript基础核心概念与常见陷阱指南

作者:异步漫步

时间:2026-10-27

浏览:528

本文系统梳理JavaScript的21个核心知识点,涵盖变量声明规范、数据类型转换规则、作用域与闭包特性、DOM操作时机及常见陷阱。重点解析全局与局部变量区别、this指向逻辑、布尔值隐式转换及异步执行机制,帮助开发者规避常见编码错误,提升代码健壮性。

文章目录

JavaScript基础语法与运算符

JavaScript语言严格区分大小写,标识符、关键字及变量名均需保持大小写一致。


若声明变量时省略var关键字,该变量将自动成为全局变量。对于非方法形式的普通函数,其内部this关键字默认指向window对象。


取模运算符%用于计算余数并保留整数部分。例如执行y=5与x=y%2后,x的值为1。


字符串连接使用+运算符,此行为与PHP语言存在差异,需注意区分。


三元运算符语法格式为:greeting=(visitor==”PRES”)?”Dear President “:”Dear “;,用于根据条件返回不同字符串。


indexOf()方法检索字符串时索引从0开始计算,空格字符同样计入位置计数。


Math.floor()函数执行向下取整,返回值小于或等于原数值。例如Math.floor(-5.9)返回-6。


在函数内部声明变量时必须使用var命令,否则该变量会意外提升为全局变量,引发作用域污染。


DOM操作与脚本加载时机

编写演示代码时,应将JavaScript脚本置于HTML文档底部。由于JS是解释型语言,边加载边执行,若DOM元素未加载完成,脚本将无法获取或操作目标对象,导致预期效果失效。


作用域、闭包与变量管理

闭包指函数嵌套结构,内层函数可访问外层函数的所有变量。即使外层函数执行完毕,这些变量仍驻留内存,可能引发性能问题。


checkbox控件打钩时返回值为check,而非true;取消选中时返回值为undefined,而非false。


判断变量是否未定义,应使用typeof(flag)===”undefined”进行严格类型检查。


JavaScript函数内部可直接访问全局变量或外部变量,这一特性与PHP语言不同。


函数中的this关键字指向调用者。非方法函数中this指向window;方法函数中this指向对象本身。需注意方法内闭包场景下this可能指向window的情况。


销毁变量的方法包括赋值null(obj = null)或使用delete操作符(delete obj)。


数据类型与类型转换机制

直接判断时,undefined、null、0、-0、NaN及空字符串”"会被转换为false;其他所有值,包括对象和数组,均转换为true。


布尔值包含toString()方法,调用后可返回true或false的字符串形式。


JavaScript仅包含6种数据类型:数字、字符串、布尔值、null、undefined和对象。


JavaScript不存在块级作用域,取而代之的是函数作用域(参考犀牛书第六版P57)。


JavaScript具有声明提前特性:函数内声明的所有变量会被提升至函数顶部(参考犀牛书第六版P58)。


JavaScript中函数的执行均为异步过程,需注意取值时序问题。

实用工具推荐

电子包浆

绿化、压缩、噪点和虚拟水印,自由调节做旧程度。

使用 ›
图片压缩

选择画质和输出格式,预览压缩前后的大小。

使用 ›
相关文章