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'
    
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 205,386评论 6 479
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 87,939评论 2 381
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 151,851评论 0 341
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,953评论 1 278
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,971评论 5 369
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,784评论 1 283
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 38,126评论 3 399
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,765评论 0 258
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 43,148评论 1 300
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,744评论 2 323
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,858评论 1 333
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,479评论 4 322
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 39,080评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 30,053评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,278评论 1 260
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 45,245评论 2 352
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,590评论 2 343

推荐阅读更多精彩内容

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