JavaScript基础:函数声明机制与JSON对象创建详解
本文详解JavaScript中函数的两种定义方式及其执行优先级,解释同名函数声明被覆盖的现象。同时介绍JSON语法在创建对象、设置属性与方法中的应用,展示如何通过JSON格式简化复杂对象的构建与序列化过程。
JavaScript函数定义与执行机制
在JavaScript中,代码的执行单元主要体现为函数(function)。
需要注意的是,上述关键字均为小写,切勿与JavaScript内置的全局构造函数如Number、String、Object和Function混淆,因为JavaScript语言严格区分大小写。
调用typeof(null)会返回字符串“object”,但这并不意味着null属于object类型,这是一个常见的认知误区。
JavaScript中的代码逻辑最终都归结为函数类型,即function。函数的定义主要有两种形式:声明式(定义式)和表达式式(变量式)。
在代码执行过程中,声明式的函数定义会优先于其他语句被解析和执行。只有当所有函数定义执行完毕后,代码才会按照顺序依次执行其余语句,JavaScript引擎是按块(block)而非逐行分析执行的。
接下来通过具体代码示例进行说明。
代码如下:
var myfunc = function ()
{
alert("hello");
};
myfunc(); //第一次调用myfunc,输出hello
myfunc = function ()
{
alert("yeah");
};
myfunc(); //第二次调用myfunc,将输出yeah 该程序的运行结果揭示了一个关键机制:在第一次调用函数后,变量myfunc被重新赋值为新的函数体。因此,第二次调用该函数时,执行的是新赋值的代码逻辑,从而输出不同的结果。
为了对比,我们将上述代码改写为声明式函数的形式。
代码如下:
function myfunc ()
{
alert("hello");
};
myfunc(); //这里调用myfunc,输出yeah而不是hello
function myfunc ()
{
alert("yeah");
};
myfunc(); //这里调用myfunc,当然输出yeah 在其他编程语言中,定义两个签名完全相同的函数通常被视为非法错误。但在JavaScript中,这是合法的。由于JavaScript引擎采用“先解析所有函数声明,再执行代码”的机制,在第一次调用myfunc之前,第二个函数定义语句已经执行并覆盖了第一个函数的定义。因此,无论调用多少次,最终执行的都是最后一个定义的函数逻辑。
对象创建与JSON语法应用
接下来介绍对象的创建方式。
代码如下:
<script type="text/javascript">
function test() {
var bo = {}; //建立一个对象
bo.姓名 = "张三"; //对象的一个属性
bo.年龄 = 18;
bo.showInfo = function() { alert(bo.姓名 + " " + bo.年龄); }; //对象的一个方法
alert(bo["姓名"]); //可以将对象当数组以属性名作为下标来访问属性
bo["showInfo"](); //可以将对象当数组以方法名作为下标来调用方法
//遍历对象里所有的属性和方法,并输出其类型
for (var s in bo) {
alert(s + " 是 " + typeof (bo[s]));
}
}
</script> JSON(JavaScript Object Notation,JavaScript对象表示法)为创建对象提供了一种极其简洁的方法。
创建一个没有任何属性的空对象示例如下:
var o = {};
创建一个对象并同时设置属性及初始值:
var person = {name: "Angel", age: 18, married: false};
创建一个对象并设置属性和方法:
var speaker = {text: "Hello World", say: function(){alert(this.text)}};
创建一个结构更复杂的对象,其中包含嵌套对象和对象数组:
代码如下:
var company =
{
name: "Microsoft",
product: "softwares",
chairman: {name: "Bill Gates", age: 53, Married: true},
employees: [{name: "Angel", age: 26, Married: false}, {name: "Hanson", age: 32, Marred: true}],
readme: function() {document.write(this.name + " product " + this.product);}
}; JSON的形式是用大括号“{}”包裹的项目列表,项目之间用逗号“,”分隔,每个项目由冒号“:”分隔的属性名和属性值组成。这是一种典型的字典表示形式,也再次印证了JavaScript中的对象本质上是字典结构。无论对象多么复杂,都可以仅用一句JSON代码来完成创建和赋值。
实际上,JSON是JavaScript对象最理想的序列化形式,相比XML,它更加简洁且占用空间更少。对象可以转换为JSON格式的字符串,在网络中自由传输和交换信息。当需要将JSON字符串转换回JavaScript内存对象时,只需使用eval函数这一强大的转换引擎,即可立即获得一个JavaScript对象。正是由于JSON这种简单朴素且高效的特点,使其在AJAX技术中成为了核心数据交换格式。
JS读取本地文件时报错或无响应的常见原因
2026-11-05 16:32:31
let、const与var的区别:JavaScript变量声明最佳实践
2026-11-05 14:16:38
JS中直接定义静态二维数组的字面量写法
2026-11-05 14:16:08
JS 怎么查找字符串中所有匹配项的位置
2026-11-05 14:15:53
JavaScript新手常犯的编码错误与最佳实践指南
2026-11-04 22:12:38
