基础语法1.1JavaScript中的上溢,下溢,除零1.1.1上溢(Overflow)当数字运算结果超过了JavaScript所能表示的数字上限时,被称为上溢,用Infinity(正无穷大)和-Infinity(负无穷大)来表示。基于正无穷大和负无穷大的所有数学运算其结果也是正无穷大和负无穷大。vara=10/0//返回Infinityvarb=-10/0//返回-Infinity1.1.2下溢(UnderFlow)当运算结果无限接近于零或是超出JavaScript所能表示的最小值时,被称为下溢,用零来表示。vara=Number.MIN_VALUE/2//返回01.1.3零除以零varc=0/0//返回NaN1.1.4isNaN(x)当x是NaN时返回true,其他返回falsealert(isNaN(blue));//输出truealert(isNaN(666));//输出false1.1.5isFinite(x)当x不是NaN,Infinity,-Infinity时返回true1.2parserFloat/parserInt1.2.1parserFloat注释:只有字符串中的第一个数字会被返回。注释:开头和结尾的空格是允许的。提示:如果字符串的第一个字符不能被转换为数字,那么parseFloat()会返回NaN。提示:如果只想解析数字的整数部分,请使用parseInt()方法。parseFloat(10)10parseFloat(10.00)10parseFloat(10.33)10.33parseFloat(344566)34parseFloat(60)60parseFloat(40years))40parseFloat(Hewas40))NaN1.2.2parseInt(string,radix)radix可选。表示要解析的数字的基数。该值介于2~36之间。如果省略该参数或其值为0,则数字将以10为基础来解析。如果它以“0x”或“0X”开头,将以16为基数。如果该参数小于2或者大于36,则parseInt()将返回NaN。说明当参数radix的值为0,或没有设置该参数时,parseInt()会根据string来判断数字的基数。举例,如果string以0x开头,parseInt()会把string的其余部分解析为十六进制的整数。如果string以0开头,那么ECMAScriptv3允许parseInt()的一个实现把其后的字符解析为八进制或十六进制的数字。如果string以1~9的数字开头,parseInt()将把它解析为十进制的整数。注释:只有字符串中的第一个数字会被返回。注释:开头和结尾的空格是允许的。提示:如果字符串的第一个字符不能被转换为数字,那么parseFloat()会返回NaN。例子parseInt(10);//返回10parseInt(19,10);//返回19(10+9)parseInt(11,2);//返回3(2+1)parseInt(17,8);//返回15(8+7)parseInt(1f,16);//返回31(16+15)parseInt(010);//未定:返回10或81.3向上向下取整,四舍五入,随机数//向上取整3console.log(Math.ceil(2.3)=+Math.ceil(2.3));//向下取整2console.log(Math.floor(2.3)=+Math.floor(2.3));//四舍五入2console.log(Math.round(2.3)=+Math.round(2.3));//随机数返回console.log(Math.random()=+Math.ceil(Math.random()*100));1.4Number1.4.1toFixed(num)方法可把Number四舍五入为指定小数位数的数字。varnum=newNumber(13.37);num.toFixed(1)=13.41.5ArraynewArray();newArray(size);newArray(element0,element1,...,elementn);//字面量方式创建vararray=[];vararray=[1,2,3];1.5.1数组push、pop直接在数组基础上操作并返回数组新的长度vararray=[];array.push(1);array.push(2);alert(array.pop());提供栈结构,先进后出,输出2直接追加添加数组vararrays=[1,2,3,4,5];vararrays1=[];//直接push结果是[[1,2,3,4,5]]arrays1.push(arrays);//通过apply传入结果是[1,2,3,4,5]arrays1.push.apply(arrays1,arrays);1.5.2concat()连接两个或更多的数组,并返回结果。参数可以是具体的值,也可以是数组对象。可以是任意多个。例如array.concat(1,2)array.concat(array1,array2…)array.concat(a1,a2,4,5…)1.5.3join(separator)把数组的所有元素放入一个字符串。元素通过指定的分隔符进行分隔。例如:array.join(;)原数组[1,2,3],返回1;2;31.5.4reverse()颠倒数组中元素的顺序。1.5.5shift()删除并返回数组的第一个元素如果数组长度为0,shift()方法将不进行任何操作,返回undefined值。1.5.6slice(start,end)从某个已有的数组返回选定的元素截取start到end下标处的数组并返回,不包括end如果start为负数,它规定从数组尾部开始算起的位置,-1指最后一个,以此类推1.5.7sort()对数组的元素进行排序functionsortNumber(a,b){returnb-a;}sort(sortNumber)上述函数将使数组降序排列,如果要升序排列改为returna-b1.5.8splice(index,howmany,e1,…,ex)删除元素,并向数组添加新元素。index决定从何处对数组进行修改;howmany决定从index起删除多少个元素,为0不删,未传此参数删除包括=index元素;vararray=[0,1,2,3,4];array.slice(2,3,[2,3,4]);console.log(array);输出[0,1,2,3,4]说明参数可以传数组toSource()返回该对象的源代码。只有Gecko核心的浏览器(比如Firefox)支持该方法,也就是说IE、Safari、Chrome、Opera等浏览器均不支持该方法。toString()把数组转换为字符串,并返回结果。讲元素用逗号分隔并返回,为了创建这个字符串会调用数组每一项的toString()方法。toLocaleString()把数组转换为本地数组,并返回结果。一般返回和toString()相同的字符串,不过内部调用的是数组中每个对象的toLacaleString方法unshift(a1,a2,…,ax)向数组的开头添加一个或更多元素,并返回新的长度。注释:unshift()方法无法在InternetExplorer中正确地工作!提示:要把一个或多个元素添加到数组的尾部,请使用push()方法。valueOf()返回数组对象的原始值该原始值由Array对象派生的所有对象继承。valueOf()方法通常由JavaScript在后台自动调用,并不显式地出现在代码中。1.5.9自定义移除方法改变原型链,所有声明的数组都会自动拥有remove能力Array.prototype.remove=function(from,to){varrest=this.slice((to||from)+1||this.length);this.length=from0?this.length+from:from;returnthis.push.apply(this,rest);}vararray=[1,2,3,4,5,6];array.remove(0);//remove12,3,4,5,6console.log(array);array.remove(-1);//removelast2,3,4,5console.log(array);array.remove(0,2);//remove0-25console.log(array);给javascript内置的Array添加一个静态方法Array.remove=function(array,from,to){varrest=array.slice((to||from)+1||array.length);array.length=from0?array.length+from:from;returnarray.push.apply(array,rest);}vararray=[1,2,3,4,5,6];Array.remove(array,0);//remove12,3,4,5,6console.log(array);Array.remove(array,-1);//removelast2,3,4,5console.log(array);Array.remove(array,0,2);//remove0-25console.log(array);1.6异常处理window.onload=function(){try{vara;throw抛出异常;console.log(a);}catch(err){console.log(err);}finally{}document.writeln(捕捉了异常我还是可以执行);}Try块中遇到异常转至catch块处理,如果try、catch块后还有语句则会继续执行。程序输出:控制台“抛出异常”页面显示“捕捉了异常…”抛异常thrownewError(“text”);throw“text”;只要throw都可以被catch(下面程序输出3)1.7事件属性当以下情况发生时,出现此事件FFNIEonabort图像加载被中断134onblur元素失去焦点123onchange用户改变域的内容123onclick鼠标点击某个对象123ondblclick鼠标双击某个对象144onerror当加载文档或图像时发生某个错误134onfocus元素获得焦点123onkeydown某个键盘的键被按下143onkeypress某个键盘的键被按下或按住143onkeyup某个键盘的键被松开143onload某个页面或图像被完成加载123onmousedown某个鼠标按键被按下144onmousemove鼠标被移动163onmouseout鼠标从某元素移开144onmouseover鼠标被移到某元素之上123onmouseup某个鼠标按键被松开144onreset重置按钮被点击134onresize窗口或框架被调整尺寸144onselect文本被选定123onsubmit提交按钮被点击123onunload用户退出页面1231.8deletejavascript类型1.9数据类型:stringnumberbooleanundefinednullobjectfunction类型判断typeofinstanceof(数组的typeof仍然是object)例子:vararray;//1console.log(typeofarray);输出undefined(第一行有没有都会输出)vararray=[1,2.3];console.log(arrayinstanceofArray);输入true1.9.1基本类型和引用类型ECMAScript有5种原始类型(primitivetype),即Undefined、Null、Boolean、Number和String。ECMA-262定义的类(引用类型)