L5-深入JavaScript
今天是周末,很晚才起,想起这两天都没写博客了,还是打开了电脑,先记录下来再出去看赛车。
函数返回值
什么是函数返回值?
简单的说,函数就是一个算法,有没有返回值是跟这个函数做什么的有关系。return a +b//这就是返回a+b 的和,用这个函数时,你只需a,b两个数就可以了。也可以说是
函数执行的结果。函数也可以没有return
函数传参
可变参(不定参)arguments
参数个数可变,参数数组
例子1:求和
求所有参数的和
function sum(){
return arguments[0]+arguments[1];
}
或
function sum(num1,num2){ //给参数取别名,增强可读性
return num1 + num2;
}
alert(sum(2,3));
例子2:CSS函数
判断arguments.length
分析程序实现原理:如果只有两个参数,那么就是获取元素样式的值;否则是设置元素样式的值。
function getStyle(){
if(arguments.length == 2){
return arguments[0].style.arguments[1];
}
else{
return arguments[0].style.arguements[1] = arguments[2];
}
}
或
function getStyle(obj, attr, value){
if(arguments.length ==2){
return obj.style[attr];
}
else{
return obj.style[attr] = value;
}
}
//call
alert(getStyle(oDiv, 'width')); // 获取oDiv的 width 值
getStyle(oDiv, 'width' ,'300px') //设置oDiv的 width 值
此方法只能获取行间样式,对非行间样式并不起作用。那如果获取非行间样式呢?接下来就介绍一种方法
获取非行间样式
obj.currentStyle[attr] // IE
getComputedStyle(obj, false)[attr] //适用除IE的所有浏览器
解决兼容问题(if判断)
if(obj.currentStyle){
return obj.currentStyle[att];
}
else{
return getComputedStyle(obj, false)[attr];
}
此方法不能获取到background的样式值?原因是background/border等这些属性是复合样式。如果要想获取,不能这样写background,应该写成background-color
数组基础
数组:相同类型数据的集合。
数组的使用
定义:
var arr1 = [1, 2, 3, 4, 5];
var arr2 = new Array(8, 9, 10);
数组一和数组二这两中定义方式是没有任何差别的,只是[]的性能略高,因为代码短。
数组的属性
length
既可以获取长度,也可以设置长度
例子:快速清空数组
数组的操作
push:(添加,末尾添加)
pop : (删除,末尾删除)
unshift:(添加,头部添加)
shift: (删除,头部删除)
这些操作都是对数组的头部和末尾进行操作的——那如何对数组的中间进行操作?接下来就要介绍一种操作数组的万能方法:
splice
splice(起点,长度) 删除元素
splice(起点,长度,元素)if(长度)?替换元素:插入元素;(?:三元运算符)
var arr1 = [1, 2, 3, 4, 5];
arr1.splice(2,3); // arr = [1,2]删除三个元素
arr1.splice(2,0,'a','b'); //arr1 = [1, 2, 'a','b',3, 4, 5]; 删除0个元素,添加两个元素 插入元素
arr1.splice(2,2,'a','b'); //arr1 = [1, 2, 'a','b', 5]; 删除2个元素,添加两个元素 替换元素
数组连接
concat : 连接两个数组
arr1.concat(arr2); // [1, 2, 3, 4, 5 ,8 , 9 ,10]
join(连接符):应用:ajax连接网址
数组排序
sort(比较函数) 排序一个数组
排序一个字符串数组
排序一个数字数组