JavaScript 基础语法速览:标识符、数据类型与作用域规则
掌握 JavaScript 的基本语法是编写稳定代码的前提。本文将从标识符命名规则、原始数据类型(数字与字符串)特性、以及变量作用域的陷阱三个维度,拆解 JS 语言层面的核心约束,帮助开发者避开常见误区。
1. 标识符定义与关键字限制
在 JavaScript 中,标识符用于命名变量、函数或属性。合法的标识符必须以字母、下划线 (_) 或美元符号 ($) 开头,后续可包含字母、数字、下划线或美元符号。JavaScript 对保留字有严格限制,禁止使用关键字作为标识符。
主要保留字列表:
- 基础关键字:
abstract,boolean,break,byte,case,catch,char,class,const,continue,debugger,default,delete,do,double,else,enum,export,extends,false,final,finally,float,for,function,goto,if,implements,import,in,instanceof,int,interface,long,native,new,null,package,private,protected,public,return,short,static,super,switch,synchronized,this,throw,throws,transient,true,try,typeof,var,volatile,void,while,with. - 特殊语义值(虽非严格保留字但应避免作为标识符):
undefined,NaN,Infinity.
重要约束:
1. 不允许在对象字面量中使用保留字作为属性名(除非使用方括号语法)。
2. 不允许在点号表达式(如 obj.key)之后直接使用保留字。
2. 数字类型:NaN 与 Infinity
JavaScript 仅有一种数字类型,内部采用双精度 64 位浮点数格式(IEEE 754),与 Java 中的 double 类似。除了常规数值外,需特别注意两个特殊值:
- NaN (Not a Number): 表示“非数字”的运算结果。它不等于任何值,甚至不等于自身 (
NaN !== NaN为 true)。检测 NaN 应使用全局函数isNaN(value),而不是直接用=== NaN比较。 - Infinity: 表示无穷大。当计算结果超过最大可表示值(约 1.7976931348623157E+308)时,返回该值。可通过
isFinite(value)判断数值是否处于正常范围。
3. 字符串类型与不可变性
JavaScript 中的字符串由 UTF-16 代码单元组成,没有单独的“字符”类型。字符串对象具有**不可变性**(Immutable),这意味着任何修改操作(如拼接、替换)都不会改变原字符串,而是返回一个新的字符串对象。通过 string.length 属性可获取字符串长度。
4. 变量作用域:var 的关键行为
理解 var 的作用域规则是避免 Bug 的核心,其特点与现代 ES6+ 的 let/const 有显著区别:
第1步:区分函数作用域与全局作用域
目的: 明确变量的可见范围,防止变量污染。
- 函数私有变量: 若在函数内部使用
var声明,该变量仅在函数执行期间有效,函数结束后回收。 - 全局变量: 若在函数外部使用
var声明,或在函数内部未使用var直接赋值(例如m = 3;),则该变量成为全局对象的属性(在浏览器中是window对象),贯穿整个程序生命周期。
第2步:警惕代码块不产生新作用域
风险提醒: JavaScript 的代码块(如 if { ... } 或 for { ... })不会创建新的词法作用域。var 声明会“提升”到当前函数的顶部。因此,建议始终在函数顶端声明所有 var 变量,或使用 let/const 以获得块级作用域支持。
5. 对象遍历与安全枚举
使用 for...in 语句可以枚举对象的所有可枚举属性名。由于原型链上的属性也会被枚举,通常需要进行过滤以只处理对象自身的属性。
推荐的安全遍历模板:
for (var prop in obj) {
// 检查属性是否为对象自有属性,而非继承自原型链
if (obj.hasOwnProperty(prop)) {
// 在此处处理 prop
}
}
假值(Falsy Values)清单: 以下值在布尔上下文中会被视为 false:false, null, undefined, 空字符串 "", 数字 0, 以及 NaN。
以上就是 JavaScript 基础语法中关于标识符、数据类型及作用域的详细内容,更多关于 JavaScript 入门技巧的资料请关注本站其它相关文章!
免责声明:本文内容仅供参考,不代表本站观点。转载或引用请注明出处。









