Javascript学习第一季(1)1,javascript字符集:javascript采用的是Unicode字符集编码。为什么要采用这个编码呢?原因很简单,16位的Unicode编码可以表示地球人的任何书面语言。这是语言国际化的一个重要特征。(大家也许见过用中文写脚本,比如:function我的函数(){});Javascript中每个字符都是用2个字节表示的。(因为是16位编码)2,大小写敏感:js是一种区分大小写的语言。注意下:以前我也犯过的错误。HTML是不区分大小写的。经常看见有人这么写,inputtype=”button”onClick=”a()”/(这样写是对的)如果放到JS中,就必须使用onclick(小写哦!)同时XHTML中也只能使用小写。这个我们并不需要太关心,象这种问题,其实都可以自己给自己定一个标准,自己写程序的时候全部小写。另外每行程序后分号也是一样,我们都写上。3,注释:单行://注释1/*注释2*/多行:/*注释3*注释3*注释3*/4,标识符:标识符就是一个名字,用来命名变量和函数。规则:第一个字母必须是字母,下划线(_),或美圆符号($)。为什么第一个字母不能为数字?如果第一个为数字,js很容易就把它当作数字处理了,那么命名就没意义了,js规定了后,就很容易的区分了标识符和数字了。5,直接量:就是程序中直接显示出来的数据值。比如:12,1.2,“hello“,true,null,[1,2,3,4]这些都是直接量。6,保留字和关键字:具体是哪些,可以去google.cn。其实我们只要不取一些特郁闷的名字,都不会冲突的。7,js数据类型:3种基本的类型;数字,字符串和布尔值。2种小数据类型:null和undefined.(为什么叫小数据类型?因为他们只定义了一个值)1种复合类型:object.(在这个类型中,它的值可以是基本数据类型,也可以是复合类型,比如其他的object.)注意:在对象中有一个特殊的对象----function.(它是一个可以执行代码的对象.)其他的一些对象:数组:Date类:是日期的对象。RegExp类:正则表达式的对象。Error类:js中发生错误的对象。8,使用数据类型注意的地方:1):数字:由于数字有什么8进制,10进制,16进制等。。。八进制:varnum=011;//以0开头十六进制:varnum=0x1f;//以0x开头所以对于js这个都能识别的语言来说,就必须得注意。alert(377);//377alert(0377);//255=3*64+7*8+7*1进行算术运算有个重要的对象:Math.具体可以去网上下载手册,查询里面的方法。2个有用的函数:isNaN()和isFinite()isNaN():用于检查其参数是否是非数字值。//提示:是非数字哦。(notanumber)document.write(isNaN(0))//返回falsedocument.write(isNaN(5-2))//返回falsedocument.write(isNaN(Hello))//返回trueisFinite(number)函数用于检查其参数是否是无穷大。如果number是有限的,则返回true.如果number是NaN(非数字)或者是无穷大,则返回false;2):字符:‘you’reright’;这样写的话js会误以为在you字母后就结束了,引起错误。所以当遇到这种情况的时候,必须用到转义。我们可以这么写:‘you\’reright’;另外:你可以google.com搜索转义序列表。字符串的简单操作例子:vara=cssrain;varb=a.charAt(a.length-1);//从字符串a中截取最后一个字符。输出:nvarc=a.substring(0,2);//从字符串a中截取第1,2个字符。输出:csvard=a.indexOf('s');//从字符串a中查找第一个s出现的位置。输出:1从例子可以看出,基数都是从0开始的。vare=a.substring(a.length-1);//可以看出,substring第2个参数不写的话,//默认是到最后。varf=a.substring(a.length-1,a.length);//等价于3):数字跟字符之间的转换:数字转字符:varnumber_to_string=number+“”;//方法1:添加一个空的字符串。varnumber_to_string=String(number);//方法2:使用String()函数。varnumber_to_string=number.toString();//方法3:使用toString()函数。注:toString()方法默认是以10进制转换。如果要使用8进制转换可以这么写:number.toString(8);字符转数字:varstring_to_number=string–0;//方法1:字符串减去0。varstring_to_number=Number(string);//方法2:使用Number()函数。varstring_to_number=parseInt(string);//方法3:使用parseInt()函数。方法1中不能用string+0;这样会导致字符串拼接,而不是类型转换。方法2中的Number函数转换,比较严格。比如:vara=19cssrain86;varb=Number(a);//输出NaN.如果我们使用方法3。varc=parseInt(a);//输出19可以看出parseInt()会自动忽略非数字的部分。parseInt()只取整数部分,忽略小数部分。parseFloat()会把小数部分也取到。和toString()一样,parseInt也有进制,默认是10进制。如果想使用8进制,可以这么写:parseInt(“077”,8);//输出63=7*8+7当字符以0开头的时候,我们必须把第二个参数指明,不然js可能会以8进制去转换。4):布尔类型:布尔在数字环境中:true转换为1,false转换为0。在字符环境中:true转换为“true”,false转换为“false”。布尔转换:varx_to_Boolean=Boolean(x);//方法1:使用Boolean()函数。varx_to_Boolean=!x;//方法2:使用感叹号。5):函数的定义:方法1:普通定义functionsquare(x){returnx*x;}方法2:函数直接量定义varsquare=function(x){returnx*x;}//推荐使用方法3:构造参数varsquare=newFunction(“x”,”returnx*x;”);//效率低6):对象:如果有一个名为cssrain的对象,他有一个高度height的属性。那么我们可以这么引用:cssrain.height;还可以使用关联数组定义:cssrain[“height”];创建对象:方法1:varpoint=newObject();point.x=3;point.y=5;方法2:使用对象直接量varpoint={x:3,y:5}当然json也可以咯。对象在字符的环境下,会调用toString()方法。数字环境下,会调用valueOf()方法。布尔环境下,非空对象为true;7):数组:常规数组:以非负整数做为下标。image[0]关联数组:以字符做为下标。如:image[“width”]js不支持多维数组,但数组里面可以嵌套数组。创建数组:方法1:vara=newArray();a[0]=“1”;a[1]=2;a[2]={x:1,y:3};方法2:vara=newArray(“1”,2,{x:1,y:3});注意下:如果只传了一个参数;比如vara=newArray(3);那么它是表示:3个未定义元素的新数组。方法3:使用数组直接量vara=[“1”,2,{x:1,y:3}];//注意外面的括号,不是花括号。8):null和undefined:null表示无值;undefined:使用一个并未声明的变量,或者使用了已经声明的变量但未赋值或者使用了一个并不存在的属性。undefined==null如果要区分:可以使用===或者typeof运算符。9,新手常遇到的疑惑:vars=”youareright”;varb=s.substring(s.lastIndexOf(“”)-1,s.length);疑惑:s是对象还是字符串,为什么字符串会有方法呢?回答:s是字符串。之所以有方法,是因为string类型有一个相应的对象类(String)。同样数字和布尔都有相应的Number,Boolean类。Js会内部进行相应的包装对象。String对象就替换了原始的字符串。总结:简单了介绍了js中的一些概念(词法结构)和数据类型(部分)。好了,今天就说到这里,明天我们继续。^_^。笔记我已给部分群员看过,有好的评论也有不好的评论。所以我郑重声明下:这是我看了DOM编程艺术,悟透JavaScript,javascript权威指南5做的笔记,我资质不深,不能写出高深的文章,如果你觉得笔记写得不好,可以不看我以后的。这篇文章就当作浪费你几分钟。Javascript学习第一季(2)上篇文章讲了js中的一些概念(词法结构)和数据类型(部分)。这章我们继续.然后了解下js中操作数据和函数的作用域。1,对象跟基本类型之间的转换:不管何时,只是对象非空,在布尔环境中都为true.如;newBoolean(false);newNumber(0);newString(“”);newArray();上面虽然内部值是false,但对象的值是true;ObjectvalueOf()toString()其中Date类,是先执行toString()转换。2,js中操作一个数据值:任何语言都有自己的操作数据的方法;Js也不例外,js有3种重要的方式来操作一个数据值。1)复制它。例如把它赋给一个新的变量。2)把它作为参数传递给一个函数或方法。3)可以和其他值比较大小。Js通过传值和传址2种方式操作这些数据的值。从名称可以看处,传值是通过传递值来操作数据。在赋值的过程中,对实际的值进行了拷贝,存储到一个新的变量中。拷贝的值和原来的值是2份完全独立的值。所以如果你改变了拷贝的值,并不会影响原来的值。当比较大小时候,通常进行琢个字节比较。传址从名字来看,就是通过传递地址来操作数据。在赋值的过程中,对实际的值的地址(可以说是引用)进行了拷贝,他们不是完全的独立,所以如果你通过引用改变了值,那么原始的值也会改变。当比较大小的时候,通常是看他们是否引用同一个地址来比较。简单的传址例子:vara=newDate();alert(a.getDate());varb=a;b.setDate(21);alert(a.getDate())//输出213,一般来说:基本数据类型通过传值来操作的。(如果忘记了哪些是基本数据类型,可以往回看。)对象数据类型通过传址来操作的。(比如数组和函数)例子:script//传值a=1;b=a;b=2;alert(a);//输出1//传址x=[1,2];y=x;//赋给y的只是x的一个引用,而不是x本身。数组已经在语句中被赋值了,执行过这段代码后,仍旧只有一个数组对象,只不过我们有2个对他的引用了。y[0]=2;alert(x[0]+|+x[1]);//输出2|2/script其中我们必须注意字符串:js中字符串是通过传址来复制和传递的,而他们是通过传值来比较的。对象和数组是用传值来传递的,只不过传递的这个值实际是一个引用,而不是对象本身。总结:类型复制传递比较数字传值传值传值布尔传值传值传值字符串不可变不可变传值对象传址传址传址不可变:在JS中,没有方法去改变字符串值的内容。对字符串来说,传值还是传址,意义不大。4,垃圾收集机制:Js中自动释放内存。比如:vars=”heelo”;varb=s.toUppe