还是专门建立一个分类,记录学习Javascript的过程吧,这篇日志算是开篇。建议大家阅读<<Object-Oriented Javascript>>这本书,虽然是英文版,但是内容很简单,连我这种英语没级的人也可以看个八九不离十。
以前工作中也用Javascript,但用到的知识点很少,最多做做表单验证或DOM操作。今时不同往日了,工作重心转到Javascript,所以基础一定要牢固,这篇日志就要要记录基础中的基础:JS中的数据类型。
对于基本数据类型,书中分成五类:
不过我个人觉得,把null归到对象类型可能更好理解,不管怎样,大家明白这几种类型的用法就可以,接下来就每种类型做介绍
Number类型的变量可以存储整数或小数,看几个例子:
var n=1; //十进制
var n=0377; //八进制
var n=0xff0000; //十六进制
var n=2e3;var n1=2e-3; //指数形式
此外,Number类型还包括一些特殊的值,比如:Infinity,代表无穷大。无穷小怎么表示呢?很简单,前边加个负号:-Infinity。用无穷大与一个数字做运算会是什么结果?Infinity-20结果还是Infinity。两个无穷大做运算会发生事呢,Infinity-Infinity结果是NaN。
这个NaN是Number另一个比较特殊的值,它是not a number的简写。代表这个变量不是一个数字,比如执行这个运算:10*"f",结果就是NaN。比较特殊的是,null在于数字运算是会被转换成0,所以10*null结果是0(undefined不会被转换,10*undefined=NaN)。
通过typeof运算符可以得知数据类型,比如typeof NaN,typeof Infinity,typeof 1结果都是"number"。
用单引号或双引号包含的一个字符序列,比如:
var s="hello,world";
两个字符串可以通过+运算符变成一个字符串,比如"hello"+'world'='helloworld'
当一个字符串与数字做运算时会发生一些转换:当一个字符串字面上就是一个数字(比如"100")时,它会被转换成数字(除了+运算符)。
"100"+2="1002"
"100"*2=200;
"hello"*2=NaN;
只有两个值:true和false
var a=true;
大多数值可以转换成true,除了下面六种:
逻辑运算符:
!最高,&&次之,||最低
注意:
1、||是短路的,比如:有个变量b的默认值是0,执行完true && (b = 6) 之后,b的值还是0。
2、Js引擎在逻辑运算中如果遇到非Boolean值,会直接返回这个值,如:true||1=1(短路),true&&1=1
当你用到的变量没有初始化或者干脆没有声明,js引擎认为它的值是undefined,null需要显式赋值,如:var s=null; typeof null的结果是"object"(所以我开头我觉得把null归到object比较合适)
前边说过,undefined转换数字会变成NaN,转换Boolean会变成false,转换字符串会变成"undefined"
"" + undefined="undefined"
null转换成数字时是0,转换成Boolean和字符串时与undefined相同。
Ok,接下来看一下对象类型
与Java不同,javascript里的数组可以放任何内容,比如:
var arr=[1,'hello',false]
数组元素可通过下标访问
删除元素:delete arr[1]; 数组大小不会变,只是将下标为1置为undefined
数组也可以嵌套:var a = [[1,2,3],[4,5,6]];
流程控制语句,如if,for,do-while,while与java很像,就不过多介绍了
记录一下for in循环
var a={a:1,b:2,c:3};
for(var i in a){
alert(i);
}
Alert "a","b","c"
var b=["a","b","c"]
for(var i in b){
alert(i);
}
Alert 0,1,2
最后吐槽一下ITEYE的编辑器,实在是烂到极点,在Word里辛辛苦苦排好版,copy过来却是这副德行:文本颜色丢失;在Word里字体相同的文字拷过来有的大,有的小;缩进丢失;编号丢失......编辑器本身排版也很麻烦,凑合看吧