JavaScript字面量与函数定义核心解析

桃夭
桃夭
发布时间:2026-10-13| 4人浏览过
原创

本文详细解析JavaScript中数字、字符串、数组等常用字面量的定义规则,重点区分函数声明、函数表达式及构造函数的定义方式。深入剖析作用域提升机制,并阐述函数作为一等对象的可调用性与属性特征,帮助开发者掌握JS基础编程规范。

理解 JavaScript 字面量

在 JavaScript 中,字面量(Literal)代表了一个固定的值。掌握各类字面量的语法是编写正确代码的基础。主要分为以下五类:

  • 数字字面量:可以是整数、小数或科学计数法表示的数字。例如 3.14、1001 或 123e5。
  • 字符串字面量:使用单引号或双引号括起来的文本。如 'John Doe' 或 "John Doe" 均可被识别为同一字符串。
  • 表达式字面量:用于计算结果的组合,例如数学运算 5 + 6 或 5 * 10。
  • 数组字面量:使用方括号包裹的一组成员,如 [40, 100, 1, 5, 25, 10]。
  • 对象字面量:使用花括号包裹的键值对集合。示例:{firstName: "John", lastName: "Doe", age: 50}。

函数定义的核心差异

JavaScript 提供了多种方式定义函数,它们在执行机制和变量提升方面存在显著区别。

第1步:函数声明 (Function Declaration)

这是最常见的定义方式,使用 function 关键字后跟名称、参数和代码块。

function myFunction(a, b) {
  return a * b;
}

关键特性:函数声明不会立即执行,而是等待调用。由于它是语句块而非单一表达式,其末尾不需要分号。最重要的是,它支持作用域提升(Hoisting),即在代码执行前会被提升至当前作用域的顶部,因此可以在声明之前被调用而不出错。

第2步:函数表达式 (Function Expression)

函数也可以不分配名称,直接赋值给一个变量。这种称为匿名函数表达式。

var x = function (a, b) {return a * b};
var z = x(4, 3);

关键特性:由于这是一个赋值操作语句,必须以分号结尾。不同于函数声明,函数表达式不支持提升。如果在定义该变量的行之前尝试调用 x(),将会报错。

第3步:构造函数定义 (不推荐)

虽然可以使用 new Function() 构造器来创建函数,但这种方式不推荐在日常开发中使用。

var myFunction = new Function("a", "b", "return a * b");

这与直接使用表达式 var myFunction = function(a, b){...} 效果相同,但在处理闭包和执行性能上,构造函数往往带来额外的负担和复杂性。

高级功能与运行机制

自调用函数 (IIFE)

如果要在定义后立即自动执行函数,可以使用自调用模式。只需在函数表达式后面添加一对括号即可触发调用:

(function () {
  var x = "Hello!!"; 
})();

注意:普通的函数声明不能直接加括号自调用,因为解释器会认为括号内是一个分组符号,从而报错。必须将其包装为表达式。

函数是“一等公民”

在 JavaScript 中,函数本质上是一种特殊的对象,可以作为值参与各种运算:

  1. 作为值返回:将函数调用的结果赋值给变量 var x = myFunction(4, 3)。
  2. 参与运算:可以作为数学表达式的一部分,如 myFunction(4, 3) * 2。
  3. 拥有属性和方法:每个函数对象都包含元数据。例如通过 arguments.length 可以获取传入的参数个数;通过 .toString() 方法可以将函数体的源代码转换为字符串。
相关标签:

免责声明:本文内容仅供参考,不代表本站观点。转载或引用请注明出处。

Python 相关产品和应用

全部下载
Selenium

Selenium

4.51.0 · Windows

用于浏览器自动化和 Web 测试的 Python 工具。

scikit-learn

scikit-learn

1.9.1 · Windows

常用 Python 机器学习算法与模型评估工具库。

Black

Black

26.10.1 · Windows

强调一致性的 Python 自动代码格式化工具。

Ruff

Ruff

0.17.1 · macOS

由 Rust 编写的高速 Python 代码检查和格式化工具。

pytest

pytest

9.1.1 · Windows

简洁而强大的 Python 自动化测试框架。

FastAPI

FastAPI

0.146.0 · Windows

高性能 Python API 框架,支持类型提示和自动接口文档。

Flask

Flask

3.1.3 · Windows

轻量灵活的 Python Web 应用框架。

Django

Django

6.1.2 · Windows

成熟的 Python Web 框架,适合构建内容站点和业务系统。

Spyder

Spyder

6.1.7 · Windows

面向科学计算与数据分析的 Python 集成开发环境。

SciPy

SciPy

1.18.1 · Windows

面向科学、工程和技术计算的 Python 算法库。