<html> <head> <meta charset="utf-8"> <title>javascript</title> <script type="text/javascript" src="./index.js"></script> <script type="text/javascript"> /* var showtext="重新学习javascript"; alert(typeof showtext); /*【typeof 是操作符而不是内置函数,函数在ECMAScript中是对象,不是一种数据类型】 alert(typeof(showtext)); */ /*【Undefine类型只有一个值:undefine,ECMAScript第三版引入这个值为了正式区分空对象和为初始化的变量】 var ident; alert(ident); */ /*【Null类型是一个只有一个值的数据类型,null,表示一个空对象的引用,typeof检测到null会返回object,undefine派生自null,alert(undefine==null)返回true】*/ /*Boolean类型 true false ,强制类型转换 var hello=Boolean(showtext); alert(typeof hello); /*存在隐式类型转换 if(hello) { alert("这里存在String类型到Boolean类型的饮食转换") } else { } */ /*【Numeber类型:整型和浮点型;NaN(Not a Number):是一个特殊的值,这个数值用于表示一个本来要返回数值的操作数未返回的数值的情况(这样就不会抛出错误),确定一个数是否超出范围用isFinite()函数,isNaN()函数,用来判断这个值是不是NaN,函数在接收到一个值之后会尝试将这个值转换为数值】 alert(0/0); alert(Number.NaN+Number.NaN)//NaN+NaN=NaN alert(NaN==NaN);//false,NaN不与任何值相等 alert(valueOf(‘valueOf函数执行‘));//返回NaN alert(isNaN(‘NaN‘));//true,NaN无法转换成数值转换成 */ /*【把非数值转换成数值的三个函数Number(),parseInt(),parseFloat()】 alert(Number(true));//1 alert(Number(‘25‘));//25 alert(Number(null));//返回零 alert(Number(‘ ‘));//返回零 alert(Number(undefine));//返回NaN */ /*【String类型】:"",‘‘, 1、在某些语言中单引号和双引号的解析字符串方式不同,但是在ECMAScript没有任何区别, 2、String包含的转义序列:\n:换行,\r:回车,\",\\:斜杠,\t:制表,\b:空格 3、ECMAScript中的字符串是不可变的,也就是说字符串一旦创建,要改变某个变量保存的字符串,首先要销毁原来的字符串 var test="字符串的不可变性"; test="test"+test; alert(test);//打印出来的是"字符串的不可变性" //.toString();转换成字符串类型 var number=1; alert(typeof number.toString()); */ /*【Object类型:面向对象】 */ /*一元运算符:++,--,前置和后置,加减乘除,求模*/ /*var num=100; alert(num++);//表达式值是100,num=num+1 alert(num);//101*/ /*var othernum=100; alert(++othernum);//101 alert(othernum);//101*/ /*【逻辑运算符】:&&,||,!*/ /*关系运算符:大于,小于等于,小于等于,大于等于,相等,不等,全等=== 在相等与不相等的比较上,如果操作数是非数值,则遵循以下原则: 1、布尔值转换成数值 2、字符串转换成相应数值再比较 3、操作数是对象,先调用valueOf()和toString()方法后再和返回值比较 4、不需要任何转换的情况下,null==undefine 5、NaN与任何数以及自身都不等 6、两个数都是对象,则比较他们是否为同一个对象,如果都指向同一个对象则返回true 7、在全等和全不等的判断上,值和类型都相等才返回true */ /*三元条件运算符 var test=1>2 ? ‘no‘:‘yes‘ if语句的简写形式*/ /*【流程控制语句】 /* 1、【if】 var box=10; if(box>1) alert("if条件控制语句"); 2、【switch】、 var box=11; switch(box) { case 1: alert(‘one‘); break; case 3: alert("three"); break; case 10: alert("ten") break; default: alert("如果都不匹配则默认执行default"); } //switch语法 switch(expression) { case 变量值:do; break; ..... default: do } 3、【do...while:先执行再判断】 var box=1; do { alert("执行第"+box+"次"); box++; } while(box<=10) 4、【while:先判断再执行】 var a=10; while(a>0) { a-- alert("a等于零循环结束"+"现在a的值是"+a); } 5、【for:先判断再执行】 for(var box=10;box>=0;box--) { alert(box); } 6、for....in:迭代语句,可以用来枚举对象的属性 var box={ ‘name‘:‘jojo‘, ‘age‘:24, ‘height‘:165 }; for(var p in box) { alert(p.name+p.age+p.height);//输出的都是NaN; } 7、【break和continue语句】 break和continue语句用于在循环中精确地控制代码的执行,其中,break语句会立即退出循环,强制继续执行循环体后面的语句,continue:退出当前循环,继续下一轮循环 */ /*for(var box=10;box>=5;box--) { if(box==5) break; alert("box等于五循环终止,当前box的值为"+box); } for (var box=10;box>=5;box--) { if (box==7) continue;//continue退出当前循环 alert("box等于七我不执行"+"当前box的值为:"+box); } 8、【with语句:将代码的作用域设置到一个特定的对象中】 var person={‘name‘:‘jojo‘,‘age‘:24,‘birth‘:‘1997-04-04‘}; for(var p in person) { alert(p);//打印的是字段; 怎么访问值呢,p.name输出undefine } with(person) { var n=name; var a=age; var h=height; alert(n);//也没有打印出来 alert(a); alert(h); } */ /*【函数】*/ /*function box() { //函数被调用我执行 alert("box()函数被调用"); } box(); function box(name,age) { alert("你的姓名"+name+",我今年"+age+"岁"); } box("jojo",23); function box(num ,num2) { return num1*num2; } var result=box(1,2);//接收返回值 */ /*【argurment接收参数】 function box() { return arguments.length; } alert(box(1,2,3,4,5,6)); */ /*对象Object和数组Array //创建对象和读取对象属性值 //【Object类型】 //打印不出来 var person=new Object(); person.name="jojo"; person.age=27; person.sex="男"; alert(person.name); //定义字段,字段赋值,定义方法,方法调用,删除属性 var person= { ‘name‘:‘jojo‘, ‘age‘:23,‘sex‘:‘女‘, //run是方法名 run:function(){return ‘这是运行给对象定义的方法‘;}//给对象定义方法,能说是属性吗 }; alert(person.name);//打印成功 alert(person[‘age‘]); alert(person.run());//调用对象方法 delete person.sex;//使用delete删除对象属性 for(var p in person) { alert("这是对象person的"+p+"属性"); } //????实际开发字面量的声明方式 function box(obj)//参数是一个对象 { if(obj.name!=undefine)alert(obj.name); if(obj.age!undefine)alert(obj.age); } box({name:‘jojo‘,age:27});//使用字面量方式定义字段 */ //【Array类型】 /*在ECMAScript中Array每个元素可以保存任何类型。ECMAScript中数组的大小可以调整 //1、使用new关键字创建数组,new关键字可以省略 var box=new Array(); var box=new Array(10);//s数组长度为10 var box=new Array(‘jojo‘,28,‘.net工程师‘);//创建数组并且分配好了元素 //2、使用字面量方式创建数组 var box=[];//空数组 var box=[‘jojo‘,27,‘甘肃‘,‘静宁‘]; var box=[1,2,];//IE识别成3个元素 var box=[,,,,,];//IE会有识别问题; //?????????和Object一样,字面量的写法不会调用Array()构造函数【Firefox除外】, 3、使用索引下标读取数组的值 alter(box[index]); box[index]=‘ ‘;//修改第index+1个元素的值 4、length属性获取数组元素量 alter(box.length); box.length=num;//强制数组个数 box[box.length]=‘js‘;//通过length给数组增加一个元素 //s数组最多可以包含4294967295个元素 var box=[ { name:‘jojo‘, age:27, sex:‘male‘ }, [‘ ‘,‘jojo‘], ‘kencery‘, 1990, new Array(‘jojo‘,‘male‘) ]; alert(box); 【对象中的方法】 1、对象和数组都有toString(),valueOf(),toLocalString(),其中valueOf()和toString()方法无论重写了谁,都会有相同的返回值。数组每个值进行字符串形式的拼接,以逗号隔开 var box=[‘jojo‘,‘lovely‘];//字面量数组 alert(box);//隐式调用了toString() alert(box.toString()); alert(box.toLocaleString()); //默认情况下,数组字符串都会以逗号隔开,使用jion()方法,则可以使用不同的分隔符来构建字符串 alert(box.join(‘|‘));//数组元素以‘|‘隔开;join:联接 2、【栈方法:push(),pop()】 //ECMAScript数组提供了一种让数组的行为类似于其他数据结构的方法。也就是说,可以让数组像栈一样,可以限制插入和删除项的数据结构,栈是一种先进后出,也栈中的元素插入(或叫推入)push()和移除(或叫弹出)-pop(),只发生在栈的顶部. var box=[‘jojo‘,‘.net工程师‘]; alert(box.push(‘humerous‘));//数组末尾添加一个元素 alert(box); box.pop();//移除数组末尾元素,并且返回移除的元素 alert(box); 3、【队列方法push(),shift(),unshift(),sort(),reverse(),contact(),slice(),splice()】 //队列方法先进先出,队列在数组的末端添加元素,从数组的前端移除元素。通过push()向数组末端添加一个元素,通过shift()从数组前端移除一个元素 var box=[‘jojo‘,‘.net工程师‘]; alert(box.push(‘daozizuidoufuxin‘));//添加元素且返回加入元素后的数组长度3 alert(box); alert(box.shift());//移除数组开头元素kencery且返回移除的元素. alert(box.unshift("huahua"));//数组前端添加元素huahua,且返回添加元素后数组长度,但是并不返回所添加的元素,IE浏览器对unshift()方法总是返回undefined而不是数组长度 alert(box);//返回数组元素,net工程师,daozizuidoufuxin //reverse(),sort() var box=[1,2,3]; alert(box.reverse()); alert(‘排序后的数组:‘+box.sort()); //contact()方法可以基于当前数组创建一个新数组, slice()方法可以基于当前数组获取指定区域元素并创建一个新数组, splice()主要用途是向数组的中部插入元素 //concat():合并数组 var box=[‘jojo‘,26,‘静宁‘]; var basebox=box.concat(‘计算机科学与技术‘);//concat:函数,合并数组,合并多个字符串 alert(box); alert(basebox); //slice() var box=[‘jojo‘,26,‘静宁‘,‘甘肃‘,‘嗯呐‘]; var boxslice=box.slice(1,5);//2返回第2-4个数组元素***slice:片,切断,返回两端截断后的中间元素 alert(box); alert(boxslice); //splice()的删除,插入,替换, //删除 var boxdelete=box.splice(1,3);//返回截取索引为1-3的数组元素 alert(boxdelete);//显示截取的元素 alert(box);//返回除索引1-3的数组元素,即当前被截取的元素被删除 //插入:第一个参数:起始位置,第二个参数(0),第三个参数:插入的项 var boxinsert=box.splice(1,0,‘计算机编程‘,‘handsame‘); alert(boxinsert);//显示空 alert(box); //替换:第一个参数:起始位置,第二个参数:删除的项数(自第一个参数提供的索引值开始删除第二个参数提供的项数),第三个参数(插入任意数量的项) var box=[‘jojo‘,26,‘静宁‘,‘甘肃‘,‘嗯呐‘]; //在索引为1的元素后开始插入自第三个参数起的数据项 var boxreplace=box.splice(1,2,100,200,300); alert(boxreplace); alert(box); 【Date类型】 1、Date类型 ar box=new Date(); alert(box.toDateString());//星期几,月,日,年 alert(box.toTimeString());//时分秒 2、通用的方法:toString(),toLocaleString(),valueOf() 3、格式化方法 toDateString(),toTimeString() 4、组件方法 var box=new Date(); alert(‘获取日期的毫秒数‘ +box.getTime());//不知道这是啥 alert(‘获取四位年份‘+box.getFullYear()); alert(‘获取月份‘+box.getMonth()); alert(‘获取日期‘+box.getDate()); alert(‘星期几‘+box.getDay()); alert(‘返回时‘+box.getHours()); alert(‘返回分钟‘+box.getMinutes()); alert(‘返回秒数‘+box.getSeconds()); alert(‘返回毫秒数‘+box.getMilliseconds()); //值传递 function box(num) { return num+=10; } var num=10; var result=box(10); alert(result);//20 alert(‘num的值‘+num);//值传递:num值不变=10 //引用传递 function box(obj)//obj=p { obj.name=‘jojo‘; } var p=new Object(); box(p); alert(p.name); */ /*正则表达式RegExp regular expression 是一个描述字符模式的对象,ECMAScript的RegExp类表示正则表达式,String和RegExp都定义了使用正则表达式进行强大的模式匹配和文本检索与替换函数 正则表达式主要用来验证客户端的输入数据,客户端验证可以节约大量的服务器端的系统资源,并且可以提供更好的用户体验、 一、//创建正则表达式,一是采用了new运算符,另一个是字面量方式 1、var box=new RegExp(‘box‘);//第一个参数字符串、 //参数 i:忽略大小写;g:全局匹配;m:多行匹配 2、var box=new RegExp(‘box‘,‘ig‘);第二个参数可选模式修饰符 3、var box=/box/; 4、vare box=/box/ig; 二、测试正则表达式 RegExp对象包含两个方法,test()和exec(),功能基本相似,用于测试字符串匹配 test()方法在字符串中查找是否存在指定的正则表达式并返回布尔值。如果存在返回true,exec()方法也用于在字符串中查找指定正则表达式,如果exec()方法执行成功,则返回包含该查找字符串的相关信息数组,如果执行失败,返回null test():在字符串中测试模式匹配。返回true或false exec():z在字符串中执行匹配搜索。返回结果数组 //使用new运算符的test方法示例 var pattern=new RegExp(‘box‘,i); var str=‘this is a Box‘; alert(pattern.test(str));//返回true //使用字面量方式的test方法事例 var pattern=/box/i; var str=‘this is a Box‘; alert(pattern.test(str));//返回true //使用一条语句实现正则匹配 alert(/box/i.test(‘this is a Box‘)); //使用exec返回匹配数组 alert(/box/i.exec(‘this is a Box‘)); var pattern=/box/i; var str=‘this is a Box‘; alert(pattern.exec(str));//exec还有其他具体应用 */ </script> </head> <!-- 1、语法关键字和保留字及变量 --> <!-- 基于对象和事件驱动 --> <!-- ECMAScript区分大小写 --> <!-- literal:直接量,直接在程序中显示出来的数据值 --> <!-- 变量名!!!!关键字,保留字 --> <!-- ECMScript的变量是松散类型即弱类型,用来保存任何类型的数据,定义变量使用var操作符 --> <!-- 2、数据类型 --> <!-- 五种简单的数据类型:Undefined、Null、Boolean、Number和String、object--> <!-- typeof:操作符 --> <!-- --> <body> </body> </html>
原文:http://www.cnblogs.com/jojoj/p/5328737.html