动态数据类型 笔记

来源:互联网 发布:有hao123软件 编辑:程序博客网 时间:2024/06/04 00:49

动态类型声明,是指语言的变量是无类型的,只有当它们被赋值后才会具有某种类型;

动态空间分配,是指变量在赋值时才会为其分配空间。

把这两种特性换成现在通常的概念,就是:变量可以理解为一个无类型指针,
只有在指针被分配一个确定的内存空间时,才可以获知该指针指向内存区的大

小,以及可能的数据类型(*)。

“动态执行”是指可以随时载入一段源代码文本并执行它。因此一
种有“动态执行”能力的动态语言,需要解释系统的支持。

动态执行系统一般依赖于解释和即时编译系统。

脚本系统的两个条件:
 脚本描述规则(不一定是语法)
 脚本解释和执行环境

动态语言的特性:
解释而非编译:JavaScript是解释执行的,它并不能编译成二进制文件。
可以重写标识符:可以随时重写(除关键字以外的)标识符,以重新定义系统
特性。这种特性也被称为“动态绑定”,但JavaScript重写的性质,比动态绑
定所能做的更多。
其它的一些来自于动态语言系统自身的定义的特性,包括:
 动态类型系统:JavaScript在运算过程中会根据运算符的需求或者系统默认的
规则转换运算元的数据类型。此外,变量在声明时是无类型的,直到它被赋予
某个有类型含义的值。所以JavaScrpt既是弱类型,也是动态类型的。
动态执行:JavaScript提供eval()函数,用于动态解释一段文本,并在当前上
下文环境中执行。
 丰富的数据外部表示:通常情况下你总是可以将一个变量序列化成字符串。

而反过来,你也总是可以通过直接量的方式来声明或创建一个数据。


而在JavaScript中,动态执行的对象是“代码文本”,它将装载与执行分成
两个阶段。对于后者来说,执行的只是一个字符串文本,至于该字符串文本是
来自internet,还是本地文件,并不是动态执行系统所密切关注的。

动态装载在JavaScript中是由宿主提供的能力。例如在WSH中提供了FileSystem对象来装载本地文件,而
在浏览器环境中提供了XMLHttpRequest,对象来装载文件——这正是Ajax在浏览器环境中得以实现的基础。