javascript笔记

JavaScript类型转换

变量假设为a

  • 转换为字符串
    1. 基本类型都有toString函数:a.toString(2/8/16)【数字转换字符串可写参数 转换为几进制字符串 默认为十进制】
    2. String(a)

    两函数不同之处在于对null的处理
    String()会返回字符串"null"
    toString() 就会报错,无法执行

  • 转换为数字
    1. parseInt(a)
    2. parseFloat(a)
    3. Number(a)

    Number()和parseInt()区别在于,当转换的内容包含非数字的时候,Number() 会返回NaN(Not a Number),parseInt() 要看情况,如果以数字开头,就会返回开头的合法数字部分,如果以非数字开头,则返回NaN

  • 转换为Boolean

    Boolean()

    1. 当转换字符串时:非空即为true
    2. 当转换数字时:非0即为true
    3. 当转换对象时:非null即为true

三目运算符

A条件 ? B结果 : C结果;

A条件真则返回B 为假则返回C

增强型循环语句

for in

调试捕捉错误

可以调试代码 并不会中断在这里

try{
	需要尝试的代码
}
catch(err){
    console.log("捕捉到错误:" + err.message);
}

对象

  • 数字
    • 使用new Number 创建

      例如:

      var a = new Number(123);
      
    • 判断是否是一个数字 使用isNaN()

      例如:

      var a = new Number(“123abc”);
      isNoN(a);  //会返回true
      
    • 返回小数 .toFixed()

      例如:

      var a = new Number("3.1415926");
      a.toFixed(2); //保留两位小数点 返回 3.14
      
    • 返回一个数字对象的基本数字类型 .valueOf()

      例如:

      var a = new Number("123");
      var b = a.valueOf();
       
      typeof a; //返回object
      typeof b; //返回number
      
  • 字符串
    • 使用 new String() 创建

    • 使用 .length 获取字符串长度

      var a = new String("Hello JavaScript");
      y.length; //返回字符串长度
      
    • 去除两边空格.trim()

      var str = "   hello ";
      console.log(str.trim()); //返回 hello
      
    • 大小写转换 .toUpperCase / .toLowerCase

      var str = "ni Hao Ya";
      console.log(str.toUpperCase()); //返回 NI HAO YA
      console.log(str.toLowerCase()); //返回 ni hao ya
      
    • 返回指定位置的字符 .charAt() / .charCodeAt()

      1. charAt() 返回指定位置字符

        例如:

        var a = new String("Hello JavaScrpt");
        a.charAt(0); //返回 'H' 字符
        
      2. charCodeAt() 返回指定位置字符unicode码

        例如:

        var a = new String("Hello JavaScrpt");
        a.charCodeAt(0); //返回 72
        
    • 字符串拼接 .concat()

      a.concat(b) 返回a和b拼接的字符串

    • 字符串出现的位置 .indexOf / .lastIndexOf(可用于判断数组中是否有这个元素)

      1. .indexOf 返回字符串第一次出现的位置

        var a = new String("Hello JavaScript");
        a.indexOf("a"); //返回字符a第一次出现的位置 7
        
        if(a.indexOf('b') === -1){
           console.log("字符串中不存在b");
           }
        
      2. .lastIndexOf 返回字符串最后一次出现的位置

        var a = new String("Hello JavaScript");
        a.lastIndexOf("a"); //返回字符a最后一次出现的位置 9
        
    • 字符串比较 .localeCompare

      a.localeCompare(b) a字符串与b字符串比较

      返回0 //表示a与b字符串相等

      返回1 //表示遇到比较的a字符比b字符更大

      返回-1 //表示遇到比较的a字符比b字符更小

      例如:

      var a = new String("Hello");
      var b = new String("Hello");
      var c = new String("ABC");
      a.localeCompare(b); //返回0
      a.localeCompare(c); //返回1
      
    • 截取一段子字符串 .substring(,)

      a.substring(x,y) 取a字符串中 x到(y-1) 的字符串

      注:(x,y)是左闭右开的区间

      var a = new String("Hello JavaScript");
      a.substring(0,2); //返回‘He’
      
    • 分割字符串 .split(,)

      a.split(b,c) 把a字符串用b字符分割 并返回数组,如果填写了c就按照c个输出,没填则输出分割的全部字符串

      例如:

      var a = new String("ab cd ef gh");
      a.split(" "); //返回 ab,cd,ef,gh  (数组)
      a.split(" ",2); //返回 ab,cd  (数组)
      
    • 替换子字符串 .replace(,)

      a.replace(b,c) 把a字符串中满足条件的子字符串b替换成c

      注:默认情况下只替换第一个,若想全部替换则参照下方全部替换规则

      var a = new String("abcdefasas");
      a.replace("a","y"); //返回 ybcdefasas
      
      //以下是全部替换的两种方法
      //1.
      a.replace(/a/g,"y"); //返回 ybcdefysys
      //2.
      var reg = new RegExp("a","g");
      a.replace(reg,"a"); //返回 ybcdefysys
      

      注:所有字符串对象的方法 返回的 字符串都是 基本类型的String。

  • 数组
    • 使用 new Array()/ [] 创建数组对象

      1. new Array() 创建空数组
      2. new Array(5) 创建长度为5的数组 未赋值都是undefine
      3. new Array(1,1,2,2,3,3) 创建自定义数组 元素就是1,1,2,2,3,3

      另外一种快捷创建,var arr = [1,2,3];

    • 使用 .length 获取字符串长度

      var a = new Array(1,1,2,2,3,3,4,4);
      a.length; //返回数组长度 8
      
    • 遍历数组 for / for in

      1. for循环利用 数组.length 就可以循环出来

      2. 使用for in增强型循环遍历数组(也可以遍历自定义对象 遍历自定义对象会遍历出原型链上所有成员)

        var a = new Array(1,2,3);
        for(i in a){
            p(a[i]);
        }
        //for in 循环
        
      3. 使用in 判断对象是否有某个属性

        var person = {
            name: "aaa",
            age: 18
        };
        'name' in person; //返回 true
        
    • 连接数组 .concat

      a.concat(b) 与连接字符串类似

    • 数组按指定分隔符组合成字符串 .join()

      a.join("@") 把a数组中每个数组成员 按@组合成字符串

      var a = new Array(1,1,2,2);
      a.join(); //返回的是默认的 1,1,2,2
      a.join("@"); //返回的是 1@1@2@2
      
    • 在尾部插入数组成员 .push 和 弹出数组成员 .pop

      a.push(5) 在尾部插入一个成员5

      a.pop() 尾部弹出一个数组成员 并返回弹出的值

    • 在头部插入数组成员 .unshift 和 弹出数组成员 .shift

      a.unshift(5) 在头部插入一个成员5

      a.shift() 头部弹出一个数组成员 并返回弹出的值

    • 数组排序 .sort()

      a.sort() 操作原数组 默认是从小到大排序

      如果需要自定义排序规则 则需要定义比较函数如:

      function comparator(x,y){
         return x-y;
          /*
      排序函数为真 则内部sort处理互换
          */
      }
       
      var a = new Array(3,1,4,1,5,9,2,6);
      a.sort(comparator);
      console.log(a); //返回从大到小排序 9,6,5,4,3,2,1,1
      
    • 数组数据翻转 .reverse()

      a.reverse() 操作原数组 进行数据翻转

    • 数组截取 .slice(,)

      a.slice(x,y) 取a数组中 x到(y-1) 的字符串

      注:与字符串截取一样,(x,y)是左闭右开的区间

      例如:

      var a = new Array(1,2,3,4);
      a.slice(1,3); // 返回 1,2(数组)
      //其他知识:伪数组转数组 obj为伪数组 arr为返回新数组
      var arr = Array.prototype.slice.call(obj,0)
      
    • 删除和插入数组成员 .splice(,,...)

      a.splice(x,y,i,k,...) 操作原数组 在数组a中 从x位置删除y个成员,再插入i,k成员

      例如:

      var a = new Array(1,2,3,4,5,6);
      a.splice(1,2); //操作原数组 从1位置删除2个成员 返回:1,4,5,6
      a.splice(1,0,2,3,3.5,3.6); //操作原数组 从1位置删除0个元素 并插入2,3,3.5,3.5 返回1,2,3,3.5,3.6,4,5,6
      console.log(a);
      
    • 数组中元素出现的位置 .indexOf / .lastIndexOf(可用于判断数组中是否有这个元素)

      var a = [1,2,3,4];
      a.indexOf(3); //返回 2;
      if(a.indexOf(5) === -1){
         console.log("数组中不存在5");
         }
      
  • 日期
    • 使用 new Date 创建日期对象

      //1. 获取当前时间
      var a = new Date(); //Fri Feb 26 2021 12:23:51 GMT+0800 (中国标准时间)
      //2. 指定时间1
      var a = new Date('2021-03-03 15:42:00');
      //3. 指定时间2 new Date(年,月,日,时,分,秒)
      var a = new Date(2020,3,3,15,42,0);
      //4 . 用时间戳创建
      var a = new Date(1614757583965);
      
    • 年[.getFullYear()]、月[.getMonth()]、周[.getDay()]、日[.getDate()]

      注:getMonth()和getDay都是返回基零的 0代表1月/星期一

      var a = new Date();
      a.getFullYear(); //返回 2021
      a.getMonth()+1; //返回 2
      a.getDay()+1; //5
      a.getDate(); //返回 26
      
    • 时[.getHours()]、分[.getMinutes()]、秒[.getSeconds()]、毫秒[.getMilliseconds()]

    • 1970至今经历的毫秒数[.getTime()]

      getTime()与程序真实运行的容器(服务器)所在的时区相关。如果程序运行在东八区,它返回北京时间1970年01月01日08时00分00秒起至现在东八区时间总毫秒数。如果运行在UTC时区则返回1970年01月01日00时00分00秒起至当前UTC时间总毫秒数

      //方法1
      var time = new Date().getTime(); // 1614757583965
      //方法2
      var time2 = new Date();
      console.log(+time2); // 1614757583965
      
    • 赋值日期时间[.setFullYear(),.setMonth(),.setDate(),.setHours(),.setMinutes,.setSeconds]

      设置时间到2012/12/12 00:00:00

      var a = new Date();
      a.setFullYear(2012);
      a.setMonth(11); //是基零的 所以11表示12月
      a.setDate(12);
      a.setHours(0);
      a.setMinutes(0);
      a.setSeconds(0);
      a; //Wed Dec 12 2012 00:00:00 GMT+0800 (中国标准时间)
      
  • 数学对象(内置对象 不能new)
    • 自然对数 Math.E 和圆周率 Math.PI

    • 绝对值 Math.abs()

    • 取最大值Math.max(...) 最小值Math.min(...)

      Math.max(1,2,3,3,4,5); //返回5
      Math.min(1,2,3,3,4,5); //返回1
      
    • 求幂 Math.pow(,)

      Math.pow(2,3); //返回 8
      
    • 四舍五入 .round(,)

      Math.round(1.4); //返回 1
      Math.round(1.5); //返回2
      
    • 随机数 .random()

      Math.random(); //返回一个0-1之间的随机数
      Math.floor(Math.random()*(max-min+1)+min);; //max-min 之间的随机整数
      
    • 开方 .sqrt()

  • 自定义对象
    • 通过new Object创建对象

      var hero = new Object(); //创建对象
      hero.name = "露娜"; //添加对象属性
      hero.say = function(){ console.log("月光啊,闪爆他们~") }; //添加对象函数
      hero.say(); //调用say 输出“月光啊,闪爆他们~”
      
    • 通过{}创建对象

      var a = {
          name: "露娜",
          age: 18,
          say: function(){
              console.log("月光映照着我的生命,以及你的死期");
          }
      }
      
    • 通过构造函数function创建对象

    1. 由于直接创建对象会每创建一个对象都要重新赋值 所以采用构造函数创建

        function Hero(name,say){
            this.name = name;
            this.say = function(){
                console.log(name + "说:" +say);
            }
        }
        var luna = new Hero("露娜","月光啊,闪爆他们~");
        var zixia = new Hero("紫霞仙子","我的意中人是一个盖世英雄~");
        luna.say(); //露娜说:月光啊,闪爆他们~
        zixia.say(); //紫霞仙子说:我的意中人是一个盖世英雄~
      
    2. 为对象原型追加方法

       // 【【【自定义对象名字首字母大写】】】
      function Hero(name,say){
          this.name = name;
          this.say = function(){
              console.log(name + "说:" +say);
          }
      }
      var luna = new Hero("露娜","月光啊,闪爆他们~");
      Hero.prototype.kill = function(killed){
          console.log(this.name + "清理掉了" + killed);
      } //Hero.prototype是为原型添加新方法,通过设置luna.__porto__(这个浏览器是私有属性 不推荐使用)设置新方法一样的
      luna.kill("小兵");
      
    • 删除对象属性 delete

      var p = {
          name: 'aaa',
          age: 18
      };
      detele p.name; //删除p中的name属性
      
posted @ 2021-02-25 17:26  镜像山海  阅读(55)  评论(0)    收藏  举报