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对象。