js扫盲---基本概念

注释

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'
    

推荐阅读更多精彩内容

  • 第5章 引用类型(返回首页) 本章内容 使用对象 创建并操作数组 理解基本的JavaScript类型 使用基本类型...
    大学一百阅读 1,774评论 0 4
  • 第一章: JS简介 从当初简单的语言,变成了现在能够处理复杂计算和交互,拥有闭包、匿名函数, 甚至元编程等...
    LaBaby_阅读 564评论 0 6
  • 本章内容 使用对象 创建并操作数组 理解基本的 JavaScript 类型 使用基本类型和基本包装类型 引用类型的...
    闷油瓶小张阅读 440评论 0 0
  • 还记得上学期学神经系统疾病接触到ALS(肌萎缩侧索硬化症)的时候,到后来网上兴起的冰桶挑战,不断提醒我曾经有一部剧...
    一君还有个名字叫钱钱阅读 179评论 0 0