• js基础知识复习


    1.script标签

    * async是开始就下载,下载完毕就执行。若同时有两个async的script,没有先后顺序
    * defer是立即下载,延迟执行。脚本在执行时不会影响页面的构造。HTML5规定,若同时有两个defer的script,要求第一个优先于第二个,但是实际不是,所以最好包含一个defer
    执行过程:
      如果是async异步----加载完成之后立马执行
      如果是defer----页面加载完之后才会执行

    2.不引入第三方变量交换两个值(数字/字符串)

    一:假如是数字
    (1)通过两个值相加
    
           var num1=10;
           var num2=20;
           num1=num1+num2;//num1=30
           num2=num1-num2;//num2=10
           num1=num1-num2;//num1=20
           console.log(num1);
           console.log(num2);
    
    (2)通过位运算符
    
           var num1 = 10;
           var num2 = 20;
           num1 = num1 ^ num2;//num1=30
           num2 = num1 ^ num2;//num2=10
           num1 = num1 ^ num2;//num1=20
           console.log(num1);
           console.log(num2);
    
    二:通用的(无论是字符串、数字、对象)
    (1)ES6的解构
    
           let a = 1,
                b = 2;
           [a, b] = [b, a];  
    
     (2) 利用数组特性
    
            var a = 1,
                b = 2;
            a = [a, b];
            b = a[0];
            a = a[1];    
    

    3.javaScript的数据类型

      基本数据类型:Number、String、Boolean、Undfined、Null、Symbol

      引用数据类型:Object、Array、Function

      typeof() ==== 判断数据类型,常用来判断基本类型。typeof(unll)===》'object'

      1)判断是否是undefined

           typeof(undefined)====>'undefined'   ||   某变量 === undefined

      2)区分各种类型

    console.log(Object.prototype.toString.call("jerry"));//[object String]
    console.log(Object.prototype.toString.call(12));//[object Number]
    console.log(Object.prototype.toString.call(true));//[object Boolean]
    console.log(Object.prototype.toString.call(undefined));//[object Undefined]
    console.log(Object.prototype.toString.call(null));//[object Null]
    console.log(Object.prototype.toString.call({name: "jerry"}));//[object Object]
    console.log(Object.prototype.toString.call(function(){}));//[object Function]
    console.log(Object.prototype.toString.call([]));//[object Array]
    console.log(Object.prototype.toString.call(new Date));//[object Date]
    console.log(Object.prototype.toString.call(/d/));//[object RegExp]
    function Person(){};
    console.log(Object.prototype.toString.call(new Person));//[object Object]
    

     Object.prototype.toString.call和Object.prototype.toString区别

    console.log(Object.prototype.toString.call('cLL'));
    [object String]
    
    console.log(Object.prototype.toString('CLL'));
    [object Object]
    
    
    call会改变this的指向,指向String
    下面的this指向的是Objec.prototype

       obj.toString()

    console.log("jerry".toString());//jerry
    console.log((1).toString());//1
    console.log([1,2].toString());//1,2
    console.log(new Date().toString());//Wed Dec 21 2016 20:35:48 GMT+0800 (中国标准时间)
    console.log(function(){}.toString());//function (){}
    console.log(null.toString());//error
    console.log(undefined.toString());//error
    

    toString为Object的原型方法,而Array ,function等类型作为Object的实例,都重写了toString方法。不同的对象类型调用toString方法时,根据原型链的知识,调用的是对应的重写之后的toString方法(function类型返回内容为函数体的字符串,Array类型返回元素组成的字符串.....),而不会去调用Object上原型toString方法(返回对象的具体类型),所以采用obj.toString()不能得到其对象类型,只能将obj转换为字符串类型;因此,在想要得到对象的具体类型时,应该调用Object上原型toString方法

    4.数组的方法

    1)栈方法:先进后出

    var arr = [2];
    var length = arr.push(1);  // 推入一项
    改变原数组,返回长度
    
    var lastItem = arr.pop(); // 取的最后一项
    改变原数组,返回取得的最后一项
    

    2)队列方法:先进先出

    var arr = [4,5];
    var length = arr.unshift(1,2,3);
    改变原数组,返回长度
    
    var  fistItem = arr.shift();
    改变原数组,返回第一项
    

    3)重排序方法

    let arr = [1,2,3,4,5,6];
    arr.reverse();
    改变原数组,进行反转,返回的是处理之后的值
    
    
    arr.sort((v1,v2)=>v1-v2)
    改变原数组,进行排序,返回的是处理之后的值
    

    4)操作方法

    concat连接在数组的后面,es6用解构就可以实现
    var arr = [1,2,3];
    var result = arr.concat('连接',[4,5,6])
    不改变原数组,返回操作的数组
    slice  截取数组中的某几项
    var arr = ['red','yellow','green','pink','white'];
    var arr1 = arr.slice(1);   ["yellow", "green", "pink", "white"]     
    var arr2 = arr.slice(1,3);    ["yellow", "green"]
    
    arr.slice(-2,-1) === arr.slice(3,4)
    不改变原数组,返回的是操作之后的数组
    接受的参数:1:截取到最后    2:按照索引值进行截取    负值返回空
    
    splice  删除 插入 替换
    
    var colors = ["red", "green", "blue"]; 
    var removed = colors.splice(0,1); // 删除第一项
    alert(colors); // green,blue 
    alert(removed); // red,返回的数组中只包含一项
    
    
    removed = colors.splice(1, 0, "yellow", "orange"); // 从位置 1 开始插入两项
    alert(colors); // green,yellow,orange,blue 
    alert(removed); // 返回的是一个空数组
    
    
    removed = colors.splice(1, 1, "red", "purple"); // 插入两项,删除一项
    alert(colors); // green,red,purple,orange,blue 
    alert(removed); // yellow,返回的数组中只包含一项
    
    删除:2  要删除的第一项的位置和要删除的项数
    插入:3  起始位置、0(要删除的项数)和要插入的项
    替换:3  起始位置、要删除的项数和要插入的任意数量的项
    改变原数组

    5)位置方法

    indexOf()和 lastIndexOf()
    
    indexOf()方法从数组的开头(位置 0)开始向后查找,lastIndexOf()方法则从数组的末尾开始向前查找。
    在比较第一个参数与数组中的每一项时,会使用全等操作符
    
    var numbers = [1,2,3,4,5,4,3,2,1]; 
    alert(numbers.indexOf(4)); //3
    alert(numbers.lastIndexOf(4)); //5 
    alert(numbers.indexOf(4, 4)); //5 
    alert(numbers.lastIndexOf(4, 4)); //3 
    var person = { name: "Nicholas" }; 
    var people = [{ name: "Nicholas" }]; 
    var morePeople = [person]; 
    alert(people.indexOf(person)); //-1 
    alert(morePeople.indexOf(person)); //0
    

    6)迭代方法

     every():对数组中的每一项运行给定函数,如果该函数对每一项都返回 true,则返回 true。 
     filter():对数组中的每一项运行给定函数,返回该函数会返回 true 的项组成的数组。
     forEach():对数组中的每一项运行给定函数。这个方法没有返回值。
     map():对数组中的每一项运行给定函数,返回每次函数调用的结果组成的数组。
     some():对数组中的每一项运行给定函数,如果该函数对任一项返回 true,则返回 true。
    以上方法都不会修改数组中的包含的值。
    

      

    every和some

    var numbers = [1,2,3,4,5,4,3,2,1]; var everyResult = numbers.every(function(item, index, array){ return (item > 2); }); alert(everyResult); //false 每一项 var someResult = numbers.some(function(item, index, array){ return (item > 2); }); alert(someResult); //true 有一项

      

    filter 过滤
    
    var numbers = [1,2,3,4,5,4,3,2,1]; 
    var filterResult = numbers.filter(function(item, index, array){ 
     return (item > 2); 
    }); 
    alert(filterResult); //[3,4,5,4,3]
    map:地图,映射
    
    var numbers = [1,2,3,4,5,4,3,2,1]; 
    var mapResult = numbers.map(function(item, index, array){ 
     return item * 2;   //有返回值,每一项做一些操作
    }); 
    alert(mapResult); //[2,4,6,8,10,8,6,4,2]
    
    forEach 每一次 var numbers = [1,2,3,4,5,4,3,2,1]; numbers.forEach(function(item, index, array){ //执行某些操作 无返回值 });

    7)归并  

    reduce()和 reduceRight()
    
    reduce()方法可以执行求数组中所有值之和的操作,比如:
    var values = [1,2,3,4,5]; 
    var sum = values.reduce(function(prev, cur, index, array){ 
     return prev + cur; 
    }); 
    alert(sum); //15
    
    var values = [1,2,3,4,5]; 
    var sum = values.reduceRight(function(prev, cur, index, array){ 
     return prev + cur; 
    }); 
    alert(sum); //15 
    

      

    5.字符串的方法

    split: 将字符串分割为数组,不改变原字符串
    
    const  str = '1,2,3,4,5';
    const result = str.split();
    
    join:
    

      

    查找字符串中的字符串
    indexOf() 方法返回字符串中指定文本首次出现的索引(位置):
    var str = "The full name of China is the People's Republic of China.";
    var pos = str.indexOf("China");

    lastIndexOf() 方法返回指定文本在字符串中最后一次出现的索引:
    var str = "The full name of China is the People's Republic of China.";
    var pos = str.lastIndexOf("China");
    提取部分字符串
    有三种提取部分字符串的方法:
    
    slice(start, end)
    substring(start, end)
    substr(start, length)
    
    substring() 类似于 slice()。
    
    不同之处在于 substring() 无法接受负的索引。
    
    substr() 类似于 slice()。
    
    不同之处在于第二个参数规定被提取部分的长度。
    

      

    String.trim()
    trim() 方法删除字符串两端的空白符:
    

      

  • 相关阅读:
    java继承
    Linux下word转pdf以及unoconv中文乱码问题
    jquery点击事件捕获
    在Windows上玩TensorFlow(一)——安装Docker【转】
    php面试总结
    [转载] PHP 线程,进程和并发
    微信小程序数据解密
    sql基础整理
    PHP 底层的运行机制与原理【转载】
    react-native 运行原理【转载】
  • 原文地址:https://www.cnblogs.com/jcxfighting/p/11825414.html
Copyright © 2020-2023  润新知