zoukankan      html  css  js  c++  java
  • 2.js深入(以通俗易懂的语言解释JavaScript)

     1.函数返回值:

      即函数的执行结果

      可以没有return

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

     2.函数传参

      可变参(不定参):arguments  ——>(参数的个数可变,参数数组)

      例子1:求和

     1 function sum() {
     2     //alert(arguments.length);
     3     //alert(arguments[0]);
     4     //类似面试题数组求和
     5 
     6     var result=0;
     7     
     8     for(var i=0;i<arguments.length;i++){
     9         result+=arguments[i];
    10     }
    11     
    12     return result;
    13 }
    14 
    15 alert(sum(8, 8, 8, 8, 8, 8));

       例子2:CSS函数

     1 function css(obj, name, value){
     2     if(arguments.length==2)    //获取{
     3         return obj.style[name];
     4     }
     5     else{
     6         obj.style[name]=value;
     7     }
     8 }
     9 
    10 window.onload=function (){        //先渲染页面,再执行此函数
    11     var oDiv=document.getElementById('div1');
    12     
    13     //alert(css(oDiv, 'width'));
    14     
    15     css(oDiv, 'background', 'green');
    16 };
    17 
    18 //<div id="div1" style="200px; height:200px; background:red;">

     3.取非行间样式(不能用来设置)

      第二个兼容(第一个兼容问题待补充)

     1 //#div1 {200px; height:200px; background:red;}
     2 
     3 var oDiv=document.getElementById('div1');
     4     
     5     
     6     if(oDiv.currentStyle){
     7         //IE
     8         alert(oDiv.currentStyle.width);
     9     }
    10     else{
    11         //FF
    12         alert(getComputedStyle(oDiv, false).width);
    13     }

       将以上函数封装,以后可通过引入的方式直接使用

     1 function getStyle(obj, name){
     2     if(obj.currentStyle){
     3                 //IE
     4         return obj.currentStyle[name];
     5     }
     6     else{
     7                 //Chrome、FF
     8         return getComputedStyle(obj, false)[name];
     9     }
    10 }
    11 
    12 window.onload=function (){
    13     var oDiv=document.getElementById('div1');
    14         
    15     alert(getStyle(oDiv, 'width'));
    16     //alert(getStyle(oDiv, 'background'));    //取不到,应该用下面的写法
    17     //alert(getStyle(oDiv, 'backgroundColor'));
    18 };

      js第二定律:但凡是好东西,一定不兼容(所以第一定律是???)

      经验:js中 99.99...%的兼容问题都是通过 if 来解决的

      上述代码background取不到背景色是因为background是一个复合样式,包括背景色、背景图片、背景位置......  

      复合样式:background、border
      单一样式:width、height、position

    4.数组基础

       定义:var arr = [1,2,3,4];

         var arr = new Array(1,2,3,4);

         这两种方式无任何差别,[ ]的性能略高,因为代码短。  

       数组的属性:length

        既可获取,又可设置,例如设置 arr.ength=0;可快速清空数组

      原则:数组中应该只存一种类型的变量

      添加、删除元素

        添加:push(元素),从尾部添加;unshift(元素),从头部添加

        删除:pop(),从尾部弹出;shift(),从头部弹出

      数组的万能操作:splice

     1 var arr=[1,2,3,4,5,6];
     2 
     3 //删除:splice(起点, 长度)
     4 //arr.splice(2, 3);    //1,2,6
     5 
     6 //插入:splice(起点, 长度, 元素...);
     7 //arr.splice(2, 0, 'a', 'b', 'c');    //1,2,a,b,c,3,4,5,6
     8 
     9 //替换
    10 arr.splice(2, 2, 'a', 'b');    //1,2,a,b,5,6
    11 
    12 alert(arr);

      数组连接:concat、join  

    1 var a=[1,2,3];
    2 var b=[4,5,6];
    3 
    4 //alert(a.concat(b));
    5 alert(b.concat(a));
    1 var arr=[1,2,3,4];
    2 
    3 alert(arr.join('- '));    //1-2-3-4    连接成字符串

      数组排序:sort

        排列一个字符串数组

    1 var arr=['float', 'width', 'alpha', 'zoom', 'left'];
    2 
    3 arr.sort();    //a->Z

        排列一个数字数组,如果直接用sort方法,则sort()会把数字当作字符串来处理,可通过比较函数来解决数字数组排序问题(面试题

     1 var arr=[12, 8, 99, 19, 112];
     2 
     3 arr.sort(function (n1, n2){
     4     if(n1<n2){
     5         return -1;
     6     }
     7     else if(n1>n2){
     8         return 1;
     9     }
    10     else{
    11         return 0;
    12     }
    13 });
    14 
    15 alert(arr);

        偷懒的好方法

    1 var arr=[12, 8, 99, 19, 112];
    2 
    3 arr.sort(function (n1, n2){
    4     return n1-n2;
    5 };

    (ps:本内容整理于blue视频教程及个人学习过程中总结,持续更新中)

  • 相关阅读:
    开工--行胜于言
    操作系统之内存管理
    C陷阱与缺陷读书笔记(一)
    关于复杂度的一些基本的定义
    归并排序
    快速排序
    前序中序后序非递归遍历
    直接插入排序
    冒泡排序
    程序内存映像
  • 原文地址:https://www.cnblogs.com/spynode/p/9852737.html
Copyright © 2011-2022 走看看