Js整理备忘(00)—— 基础

1、字符集 

Unicode字符,Javascript(以下均简称Js)程序中每个字符都是两个字节表示的,16位的Unicode编码可以表示地球上通用的每一种书面语言。

2、数据类型

数字(number)

所有数字都由浮点型表示,采用IEEE 754标准定义的64位浮点格式。注意,某些整数运算(如位运算)是对32位整数执行的。

一些特殊数值常量:

NaN(Number.NaN),特殊非数字值;

Infinity(Number.POSITIVE_INFINITY),正无穷大;

-Infinity(Number.NEGATIVE_INFINITY),负无穷大;

Number.MAX_VALUE,可表示的最大数字;

Number.MIN_VALUE,可表示的最小数字(最接近零)。

——函数 isFinite(n) 检测一个数字是否是NaN、正无穷大或负无穷大。

字符串(string)

没有char这样的类型,表示单个字符,必须使用长度为1的字符串。

布尔值(boolean)

有时候可以把两个可能的布尔值看作on(true)和off(false),或者yes和no

函数(function)

是“具有可执行代码的对象”

对象(object)

表示“已命名的数据的无序集合”

这些已命名的数据通常被作为对象的属性来引用(有时,它们被称为),属性可以是任何类型的数据(数组、函数、对象…)。

此外,还有一些专用对象,如Date类、RegExp类、Error类等。

数组(array)

表示“有编号的数据的有序集合”

数组可以存放任何一种Js数据类型,包括对其他数组、对象、函数的引用。

Js中并不支持多维数组,不过其数组元素还可以是数组。

Js是一种非类型语言,因此数组元素不必具有相同类型。

空(null)、未定义(undefined)

null  表示“无值”,常被看作对象类型的一个特殊值,即“无对象”。

——布尔环境:false;数字环境:0;字符串环境:“null”

undefined  使用一个未被声明的变量、或已经声明但未赋值的变量、或并不存在的对象属性时,返回该值。

——布尔环境:false;数字环境:NaN;字符串环境:“undefined”

注意:

(1)运算符“==”将两者看作相等

(2)运算符“===”或者typeof()可区别两者

 

类型间的转换——详参考权威指南P47

数字-->字符串:N.toFixed(n),N.toExponential(n),N.toPrecision(n)

字符串-->数字:parseInt/parseFloat(s,{p})

布尔型-->其他:数值,true->1,false->0;字符串,true->“true”,false->“false”

其他-->布尔型:数值,0/NaN->false,其他->true;字符串,空串->false,其他->true;其他,null/undefined->false,任何非空的对象/数组/函数->true

 

3、基本数据类型的包装对象

先看两句常见的字符串操作

var s="Hello Word";

var last_word=s.substring(s.lastIndexOf("")+1,s.length);

s是对象吗?字符串不是基本类型吗?由typeof(s)可知s是string类型,即字符串类型。那么为什么字符串的操作能够采用对象的表示法呢?

——事实上,三种基本类型都有相应的对象类,即Number、String和Boolean类,这些类是基本类型的包装(wrapper),不仅具有和基本类型一样的值,还定义了用来运算数据的属性和方法。

注意:当在对象的环境中使用字符串时,被创建的String对象是瞬时存在的,使我们可以访问属性或方法,用完后就没有了,系统会将它丢弃。

以前面两行代码为例,测试:

<script type="text/javascript">
    var s = "Hello Word";
    document.write(typeof (s));
    
    var last_word = s.substring(s.lastIndexOf("") + 1, s.length);
    document.write("<br/>" + typeof (s));
</script>
页面输出什么?答案是——

string

string(说明s只是在使用其包装对象的属性或方法时瞬时创建了一个String的对象而已,用完即被丢弃,而s本身没有变化)

但是,如果要显式地使用String对象,则必须创建一个非瞬态对象,如S=new String("Hello Word");

同样地,当我们在需要原始字符串值的地方用了String对象时,Js也会自动将String对象转换为一个字符串。

如msg=S+"!";

此处有关字符串值和String对象的内容同样适用于数字、布尔值和Number、Boolean对象。

posted on 2010-01-10 22:24  lihua好心情  阅读(363)  评论(1编辑  收藏  举报