美文网首页Web前端之路
我的前端入门笔记(6)--js片断

我的前端入门笔记(6)--js片断

作者: 叫我徐小星 | 来源:发表于2015-08-31 14:15 被阅读116次

碰到问题就要去查、去问,在查的过程中你会发现更多放入东西,也许这就是学习吧。
作为一个js还没入门的菜鸟级的人物,第一次见到这段代码时,是百思不得其解。
代码如下:

function mysort( ){                             //从小到大排序
    var tags = new Array();
    for(var i = 0; i < arguments.length; i ++){
        tags[i] = arguments[i];
    }
    tags.sort(function(a,b ){
        return a-b;
    });
    return tags;
}
var result = mysort(10,4,2,11,33,5);
console.log(result);//输出结果[2, 4, 5, 10, 11, 33]

然后我进行了如下的改动:

将         tags.sort(function(a,b ){ return a-b; }
改成了   function sort(a,b){
            return a-b;
          }
          tags.sort();   //输出[10, 11, 2, 33, 4, 5]

然后经过一番查询,我了解到这里的function sort是没有用的,tags直接调用了sort方法,以字符串的形式在比大小,所以得到以上结果。还了解到了回调函数,以下是我对回调函数的理解:

  function f1(callback){
     console.log("先执行");
     callback();
  }
  function f2(){
     console.log("后执行");
  }
 f1(f2);//输出:先执行
                后执行

回调函数即在函数f1中调用函数f2,先执行f1,在执行f2;如果后面有f3,f1执行时间较长,则会先执行f3.
例如:我需要去超市买东西,可是我马上要开始工作了,那么我就可以让别人帮我去买东西,我去工作,买回来之后我检查一下东西买的是否齐全。那么这里f1:去超市买东西;f2:检查;f3:工作。

上面那段代码写成这样:

 function mysort( ){
    var tags = new Array();
    for(var i = 0; i < arguments.length; i ++){
        tags[i] = arguments[i];
    }
    tags.sort(s);
    return tags;
 }
 function s(a,b ){
    return a-b;
 }
 var result = mysort(10,4,2,11,33,5);
 console.log(result);

或者这样:

 function mysort( ){
    var tags = new Array();
    for(var i = 0; i < arguments.length; i ++){
    tags[i] = arguments[i];
    }
    var s = function(a,b ){
       return a-b;
    }
    tags.sort(s);
    return tags;
 }
 var result = mysort(10,4,2,11,33,5);
 console.log(result);

那麽现在又涉及到一个同步异步的问题,简单说一下我对同步异步的理解。
同步:程序按从上到下的顺序执行,只有前面的函数执行完成之后,后面的函数才能开始执行;
异步:参照物是某个线程,在线程x之外做一个任务a而不阻塞线程x让线程x可以做其他的任务b
注:Javascript是单线程

在改动的同时了解到,要想为Array增加方法需要通过prototype属性添加。
现在为Array添加一个原型方法,删除数组中重复的元素。

Array.prototype.s=function(){
   var del=[];
   for(var i=0;i<this.length;i++){
      for(var j=i+1;j<this.length;){
         if(this[i]===this[j]){
            del.push(this.splice(j,1)[0]);
         }else{
            j++;
         }
       }
    }
    console.log(del);
}
var a=[9,11,5,7,9];
a.s();
//输出结果为:[9]
function unique(arr){
    var set = new Set(arr);
    return Array.from(set);
}

var arr = [10,9,8,7,6,8,9];
unique(arr);      //[10, 9, 8, 7, 6]
var set = new Set(arr);
set;             //Set {10, 9, 8, 7, 6}
Array.from(set); //[10, 9, 8, 7, 6]

相关文章

  • 我的前端入门笔记(6)--js片断

    碰到问题就要去查、去问,在查的过程中你会发现更多放入东西,也许这就是学习吧。作为一个js还没入门的菜鸟级的人物,第...

  • 技术文章地址

    Web前端开发CSS、JS 廖雪峰的JS教程 JQuery基础 前端工程师必备的PS技能—切图篇 前端入门方法 A...

  • ES6学习笔记 篇一 赋值(传值 引用 解构)

    本文是一系列就阮一峰的《ECMAScript 6 入门》的学习笔记。附上篇零:ES6学习笔记 篇零 变量声明 JS...

  • JS笔记6:JS入门

    1、JS简介 2、第一行Js代码 JS书写方式 3、变量 4、JS注释 // 单行注释/*多行注释*/

  • Node.js 笔记二:入门及GeoNode.js GIS相关库

    Node.js 笔记二:入门及GeoNode.js GIS相关库 入门 node.js之fs模块 Node.js模...

  • 【前端全栈】1.从入门到工作

    2020年大热的前端技术:Vue3/TS/Flutter 1、分阶段: 先导(JS入门、Vue入门等) 入门阶段(...

  • 2019-01-17

    前端学习路径和方法 适合自己的前端学习方法前端技术的知识架构理解前端技术背后的核心思想 推荐入门 :《js高程》《...

  • 前端技术栈

    最近开始入门前端,个人记录下将要学习到的技术栈1、css、js2、es6语法3、webpackjs4、nodejs...

  • 零基础如何成为一个黑客

    我建议先从web安全开始入门,学习web安全首先就要了解前端知识。 Html/css/js/php/都是学习前端所...

  • ES6 let命令和const命令

    基于ES6标准入门(第3版)这本书的笔记要学习angula,vue,react等新的前端框架,必须先熟悉ES6的语...

网友评论

    本文标题:我的前端入门笔记(6)--js片断

    本文链接:https://www.haomeiwen.com/subject/ucokcttx.html