美文网首页
js扫盲---基本概念

js扫盲---基本概念

作者: 漓漾li | 来源:发表于2017-09-25 11:45 被阅读12次

    注释

    ECMAscript的注释包括单行注释块级注释

        //单行注释
    
        /*
        * 块级注释
        * 块级注释
        */
    

    扫盲点: 虽然块级注释的的第2、3行都以一个星号开头,但这并不是必须的 。只是为了提高注释的可读性。


    typeof

    ECMAscript有5种简单数据类型(String, Number, Boolean, Null, Undefined)和一种复杂数据类型(Object);

    typeof的返回值有

    • undefined 对应 Undefined
    • boolean 对应 Boolean
    • string 对应 String
    • Object 对应 Object 或 Null
    • function 如果变量为函数

    扫盲点:

    • 函数属于对象,并不是单独的一种数据类型,但typeof对对象函数做了区分。
    • typeof是操作符,并不是函数,所以typeof后括号可有可无
        var msg = 'message';
        typeof 88;   //number
        typeof (msg)  //string
    
    • typeof一个未声明和未初始化的值,返回的都为undefined
        var a;  //未初始化
        // var b; 未声明
        typeof a;   // undefined
        typeof b;  // undefined
    

    null

    null表示一个空对象指针,因而 typeof null返回的是object。

    扫盲点:

    • 除非显示指定为null,否则不会得到null。(相对于undefined而言,一个值只要声明未定义,便可得到undefined)
    • null的意义:如果变量将来准备用于保存对象,那最好初始化该变量为null。不仅可以体现null作为空对象指针的惯例,也有助于区分null和undefined。

    NaN

    扫盲点

    • NaN不与任何值相等

    string

    扫盲点:

    • toString():
      • number,boolean,object,string都有 toString()方法;
      • undefined和null没有toString()方法;
    • String():
      • 如果参数有toString()方法,则调用toString();
      • 如果为 null,返回 “null”;
      • 如果为undefined , 返回 “undefined”

    Object

    扫盲点:

    • constructor:保存着用于创建当前对象的函数,即构造函数
    • hasOwnProperty: 用于判断属性在对象的实例中是否存在(而不是在原型中)

    label语句

    label:

    扫盲点:

    outerFor:
    for (var i = 0; i < 3; i++) {
        for (var j = 0; j < 3; j++) {
            if (i === 1 && j === 1) {
                break outerFor;
            }
            console.log(i + "" + j)
        }
    }
    // 当if中语句为true时,break outerFor不仅跳出了内部循环,也跳出了外部循环
    // 00
    // 01
    // 02
    // 10
    

    function

    扫盲点:
    ECMAscript函数不介意传递参数的个数以及类型,因为参数在内部是使用一个数组表示的,即arguments。


    Array

    扫盲点:

    操作方法:

    • concat: 拼接数组,并返回新数组
        var colors = [1, 2, 3];
        var colors2 = colors.concat(4, [5, 6]) ;  //[1,2,3,4,5,6]
    
    • slice: 截取数组,并返回新数组
      • 传一个参数,则从起始位置截取到最后以为
      • 传两个参数,则从起始位置截取到结束位置
      • 包含起始位置,不包含结束位置
    • splice: 传入不同的参数(共有三个参数:起始位置,要删除的项数,要插入的项)可以实现不同的功能,并返回从从原数组中删除的项。
      • 删除: arr.splice(起始位置,删除项数)
      • 插入: arr.splice(起始位置,0,插入项...)
      • 替换: arr.splice(起始位置,删除项数,插入项...)

    位置方法: indexOf()、lastIndexOf()

    迭代方法:

    • every: 如果函数对每一项都返回true(即全部满足条件),则返回true,
    • some: 如果函数对任一项返回true(即至少有一项满足条件),则返回true;
    • filter: 返回函数回返回true的项组成的数组(即过滤出数组中符合条件的项);
    • map: 返回每次函数调用结果组成的数组(即对数组中每一项做操作);
    • forEach 对数组每一项运行函数,没有返回值即基于数组的数据做其他操作

    归并方法:

    • reduce()、reduceRight()
      • 接受的函数接收四个参数:前一个值,当前值,项的索引,数组对象
      • 函数的返回值,会作为第一个参数自动传递给下一次迭代
      • 第一次迭代发生在数组的第一项,所以第一个参数为数组的第二项,第二个参数为数组的第二项。
      • reduceRight 即反方向做相同操作。
        // 使用reduce实现数组求和
        var  arr = [1,2,3,4,5];
        var sum = arr.reduce(function(pre, curr, idx, array){
            return pre + curr;
        })
        console,.log(sum);   // 15
    

    RegExp

    扫盲点:

    • 正则模式中所有元字符(这些字符在正则表达式中都有一种或多种用途,如果想要匹配这些字符,需要转义):
     ( ) [ ] { } \ ^ $ | ? * + .  
    

    函数

    扫盲点:

    • 由于函数是对象,所以函数名保存的实际上是指向函数对象的指针
    • arguments的属性callee: 指向拥有此arguments的函数。
        // 递归函数中,函数的执行与函数名耦合在一起。
        function factorial(num){
            if(num <= 1){
                return 1;
            }else{
                reutrn num * factorial(num - 1);
            }
        }
        // 递归函数中的函数名解耦,arguments.callee即为当前函数
        function factorial(num){
            if(num <= 1){
                return 1;
            }else{
                reutrn num * arguments.callee(num - 1);
            }
        }
    
    • caller:当前函数的调用者。

    基本包装类型

    ECMAscript提供了三种特殊的引用类型:Boolean、String、Number。这些类型与引用类型相似,但同时具有基本类型相应的特殊行为。

    扫盲点:

        var str = 'some text';
        var str = str.substring(2);
    

    str变量为基本类型,但是却有相似于引用类型的方法。其实在访问字符串时,后台会完成下列处理:
    + 创建String类型的一个实例;
    + 在实例上调用指定的方法;
    + 销毁这个实例
    引用类型与基本包装类型的区别在于对象的生存期:
    + 引用类型(即使用new操作符创建的)实例:在执行流离开当前作用域之前都会保存在内存中;
    + 自动创建的基本包装类型:只存在于一行代码的执行瞬间


    基本包装类型---Number

    扫盲点:

    • toString:接收一个参数,表示返回几进制数值的字符串形式;
    • toFixed: 接收一个参数,表示保留几位小数。(补0或舍入来保证小数位数);
    • toExponential:返回指数表示法的字符串格式。(接收一个参数便是小数点位数);
    • toPrecision:可能返回规定大小格式,也可能返回指数格式,具体看哪种规则更合适(接收一个参数表示所有数字位数,不包括指数部分)

    基本包装类型---String

    扫盲点:

    • length属性:返回字符串的长度;
    • 字符方法:
      • charAt: 接受一个基于0的表示字符位置的数字,返回字符串中在此位置的字符;
      • charCodeAt:同chatAt,返回字符的字符编码;
      • 也可同数组一样通过中括号访问字符;
          var str = 'hello world';
          str.charAt(1);    // 'e'
          str.charCodeAt(1);   //'101'  即‘e’的字符编码
          str1[1];   // 'e'
      

    相关文章

      网友评论

          本文标题:js扫盲---基本概念

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