已经基本掌握:
数据类型、选择语句、循环语句。
比较生疏的部分:
函数定义、嵌套, 数组, 原型函数
以下是细节:
--------------------------------
函数部分
--------------------------------
1.基本方式
function fun_name(){} //没有参数
function fun_name(a, b){} //有参数
2.很独特的定义方式,别的语言少见。
定义方式:var f=new Function("x","y","return x*y");
等价于: function f(x,y){ return x*y;}
3.以函数作为参数的函数
4.变量空间:全局 和 函数内部。
局部和全局重名的变量,采用局部的。
--------------------------------
数组部分
--------------------------------
(1)定义方式:
1)var a=new Array();
2)var b=new Array(size); //定义初始大小,而不是固定就这么大。
3)var c=new Array(d1,d2,..., dn); //如果仅用一个数字,会被当做第二种方法-数组大小,而不是数组元素。
4)var d=[d1,d2, ... , dn];
5)var e=[];
(2)访问数组:
1)[]运算符访问数组中的一个单元;
2)a[0],可以读也可以写;
3)索引从0开始;
4)a[x]=n直接创建了数组中的一个单元,而且赋了值n。
(3)length就是数组的最大坐标+1。
这个值可写,也就是可以定义。
如果定义的比原来小,则后面的被截掉,找不到了。
如果比原来的大,则后面的同样没有定义。
colors.length=2;
colors[colors.length]="yellow"; //相当于在后面又追加了一个元素。不覆盖前面的元素。具有可扩展性代码。good。
colors[colors.length]="brown"; //同上。不用修改就可以继续使用。
(4)转换数组为字符串
<script>
var colors=["red","blue","green"];
function w(a){document.write( a + "<br />");}
w(colors.join(" || "));
alert(colors.toString()); //输出整个数组为字符串,逗号隔开
alert(colors.valueOf());
alert(colors);
alert(colors.join(",")); //定义数组元素之间的分隔符
alert(colors.join("||"));
</script>
(5)堆栈操作:先进后出
push压入数组元素,
pop取数据,从最后的一个元素取。
(6)队列操作:先进先出
push压入数组元素,
shift时先进先出。
(7)排序操作
function w(a){document.write( a + "<br />");}
var values=[0,100,5,10,15];
values.sort(); //排序操作,从小到大
w(values);
values.reverse(); //反序
w(values);
结果:
0,10,100,15,5
15,10,5,100,0
note:感觉sort很诡异,根本不是大小排序。
-------------
查了下原型 arrayobj.sort(sortfunction)
参数
arrayObj
必选项。任意 Array 对象。
sortFunction
可选项。是用来确定元素顺序的函数的名称。如果这个参数被省略,
那么元素将按照 ASCII 字符顺序进行升序排列。
说明
sort 方法将 Array 对象进行适当的排序;
在执行过程中并不会创建新的 Array 对象。
如果为 sortfunction 参数提供了一个函数,那么该函数必须返回下列值之一:
负值,如果所传递的第一个参数比第二个参数小。
零,如果两个参数相等。
正值,如果第一个参数比第二个参数大。
------------
7.1 改进版:自己写比较的规则,用函数表示。
function w(a){document.write( a + "<br />");}
function compare2(value1, value2){ //从大到小排列
a=value1;
b=value2;
if( a < b ){
return 1;
} else if( a < b ){
return -1;
} else{
return 0;
}
}
var values=[0,100,5,-10,15];
values.sort(compare2); //排序操作,从小到大
w(values);
结果:100,15,5,0,-10
符合预期。
7.2 再搞一个按绝对值排序的,只需要将上面的红色部分替换即可。
a=Math.pow(value1,2);
b=Math.pow(value2,2);
结果:100,15,-10,5,0
符合预期。
(8)数组操作
连接
colors2=colors.concat("yellow",["red","black"]);
截取
colors=colors.slice(1,4); //截取从1到3,不取4,作为新的数组;
splice()
完整用法:splice(开始位置, 删除个数, 插入元素);
删除 splice(0,2)
插入 splice(2,0,"red","green")
替换 splice(2,1,"red","green")
refer
1.数学函数:http://fyb613.blog.163.com/blog/static/325460922009412102345449/
2.sort()方法:http://www.jb51.net/article/4168.htm