JS中的函数和数组

145 阅读1分钟

JSON

javascript object notation

json和数组

  1. json的下表是字符串,arr的下表是数字

  2. arr可以利用length进行循环 json没有length json利用for in(arr也可以)

    for(var i in json){
      alert('第'+i+'个是'+json[i]);
    }
    

函数

参数可以任意个,返回值只能有一个

利用json可以返回多个值

return是空的=undefined

一个函数应该只返回一种类型的值

1. 函数传参

arguments 是一种数组 可变参 不定参

用于不确定参数个数的时候

function sum(){
    // arguments
    var result=0;
    for(var i=0;i<arguments.length;i++){
        result+=arguments[i];
    }
    return result;
}
alert(sum(1,2,3,4))

2. CSS函数

是jquery的一个函数

css(oDiv,'width');//两个参数 获取样式
css(oDiv,'width','200px');//三个参数 设置样式

通过判断传入参数的个数 决定函数功能

function css(){
  if(arguments.length==2)//获取
  {
     return arguments[0].style[arguments[1]];
  }
  else//设置
  {
     arguments[0].style[arguments[1]]=arguments[2]
  }
}

window.onload = function(){
  var oDiv=document.getElementById('div1');
  alert(css(oDiv,'width'));//获取
  css(oDiv,'background','black');//设置
};

3. 取非行间样式

行间样式的获取:oDiv.style.width 写在样式表或者外部样式表的获取: oDiv.currentStyle.width或者用于chrome的getComputedStyle(oDiv,随便放什么).width 两种都只兼容部分浏览器

用if语句实现各种浏览器都兼容:

if(oDiv.currentStyle)//IE
    {
        alert(oDiv.currentStyle.width);
    }
    else//chrome/fox
    {
        alert(getComputedStyle(oDiv,false)[width]);
    }
}

将上述思路封装成函数使用:

function getStyle(obj,name){
    if(obj.currentStyle){
        return obj.currentStyle[name];
    }
    else{
        return getComputedStyle(obj,1)[name];
    }
}

需要注意的是: ​ CSS有两种样式

​ 复合样式:background

​ 单一样式:width,height

这样的方法只能取出来单一样式

数组

1. 声明数组的方法:

​	var arr = [1,2,3];
​	var arr = new Array(1,2,3);

​ 方括号性能更高

2. 数组的length可以获取也可以设置

​ 例子:设置arr.length=0可以清空数组

3. 数组使用原则:一个数组中只使用一种数据类型

4. 数组的操作

① 添加删除

  • 末尾添加 arr.push() ​

  • 头部添加 arr.unshift()

  • 末尾删除 arr.pop()

  • 头部删除 arr.shift()

  • 指定位置操作 万能操作splice()

    ​ 删除:splice(起点,长度)

    ​ 在起点处插入或替换元素:splice(起点,删除长度(若不删除则为0),‘元素)

② 数组的连接

  • concat()方法 直接连接

    arr1.concat(arr2)

  • join()方法 元素之间连接

    var arr1 = [1,2,3,4,5,6];
    alert(arr1.join('-'));
    ->1-2-3-4-5-6
    

③ 数组的排序

  • 用于字符串字母序 如果用于排序数字会当做字符串处理

    arr1.sort();

  • 用于数字序 传一个比较函数为参数

    arr1.sort(function(n1,n2){
        if(n1<n2){
            return -1;
        }
        else(n1>n2){
            return 1;
        }
        else{
            return 0;
        }
    
    });     
    

    ​ 不一定是-1、1,只要是负数或者正数就可以,整理简化后得:

    arr1.sort(function(n1,n2){
        return n1-n2;
    });