JavaScript记忆小结

2020年使用最广泛的编程语言:JavaScript、python、java还是占据前几位

JavaScript是最流行的脚本语言,特点是跨平台、跨浏览器驱动网页、与用户交互

历史是辉煌的,bredan eich只用了10天就写出来了,没看错,只有10天

1、基本语法
引入方式一:可以放在网页任何地方
引入方式二:放到js文件里,然后引入js到网页中

编写JavaScript建议使用notepad++
调试的话直接用开发者模式里的console编辑测试
要点
语句后加;语句块{}
注释://或者/aaa/
数据类型:number、字符串(‘’或者"")、比较运算法(=代替,因为===不会自动转换数据类型),IaNaN,null和undefined区别分清
字符串:转义字符
多行字符串表示:这个符号,英文格式下tab键上面那个,${a}可以替换字符串,如var name = 'xiaohong'; var message = 你好,${name}`;
数组:indexOf() 搜索指定元素位置
slice() 数组的子元素,相当于substring
push() 末尾加元素,pop()末尾元素删掉
unshift()头部加元素,shift()删掉第一个
sort()排序,reverse()转置
splice() 从指定位置删除几个元素,在从该位置加入新数据,如var arr = [1,2,3,4,5];
arr.splice(2,2,7,8);arr结果:[1,2,7,8,5]
concat()两个数组连接,join(‘-’)数组元素用-连接
对象:{}里包含的键值对,需要注意一点当键中间有特殊符号的时候,键需要’'括起来,还有判断一个属性是不是对象自身拥有,使用hasOwnProperty()代替in
条件判断:if
循环:for , for…in(可以循环所有属性),
Map和Set:
遍历:for…of(只要对象是iterable类型),可以遍历属性和值
for…in 只是遍历属性
forEach()内置的这个方法也可以遍历

2、函数
定义:function abc(x){} 有函数名的定义
var abs = function(){} ; 没有函数名的定义(匿名函数)有时候为了避免参数收到的是undefined,可以对参数进行检查,如:

function abs(x) {
   if (typeof x !== 'number') {
        throw 'Not a number';
    }
    if (x >= 0) {
        return x;
    } else {
        return -x;
    }
}

内置的arguments可以用来判断所有参数条件,如:if(arguments.length ===0){return true};
变量作用域:跟JAVA语言一样,变量有范围限制
方法:方法内部this.属性名,指向当前对象
单独调用方法,会返回NaN,如getAge();

function getAge() {
    var y = new Date().getFullYear();
    return y - this.birth;
}

var xiaoming = {
    name: '小明',
    birth: 1990,
    age: getAge
};

解决this的方法是一开始就捕获它,var that = this;
或者用函数本身的参数,getAge.apply(对象,[]),如:Math.max.apply(null,[3,4,5]);

高阶函数
意思就是把函数当参数传进去
map 实现函数和变量的映射
reduce 实现结果和序列的下一个元素累积计算
filter 过滤元素,如只要偶数
sort 排序,需要知道排序规则,先转成string在排序
数组的find方法,查找符合条件的第一个元素,findIndex是返回索引
forEach类似map,用于遍历
如:[x1, x2, x3, x4].reduce(f) = f(f(f(x1, x2), x3), x4);

var arr = [1, 2, 3, 4, 5, 6, 7, 8, 9];
var results = arr.map(pow); // [1, 4, 9, 16, 25, 36, 49, 64, 81]
var r = arr.filter(function (x) {
    return x % 2 !== 0;
});

闭包:返回的是一个函数,而不是普通变量
如:

function lazy_sum(arr) {
    var sum = function () {
        return arr.reduce(function (x, y) {
            return x + y;
        });
    }
    return sum;
}

3、标准对象
正则表达式
\d 表示匹配一个数字
\w表示匹配一个字母或数字
.表示匹配任意字符
\s 表示匹配一个空格
*表示任意个字符
+表示至少一个字符
?表示0或1个字符
{n}表示那个字符
{n,m}表示n-m个字符
例子:\d{3}\s+\d{3,8} 表示可以匹配任意个空格隔开的带区号的电话号码

精准匹配:
[0-9a-zA-Z_] 匹配一个数字、字母或者下划线
[0-9a-zA-Z_] + 匹配至少一个
[a-zA-Z_$][0-9a-zA-Z_$]{0, 19}更精确地限制了变量的长度是1-20个字符(前面1个字符+后面最多19个字符)
^ 表示行的开头
$ 表示行的结束
创建正则表达式:
var re1 = /ABC-001/ //以/…/表示
var re2 = new RegExp(‘ABC\-001’) //new RegExp表示
test方法是判断给定的字符串是否符合条件

var re = /^\d{3}\-\d{3,8}$/;
re.test('010-12345'); // true
re.test('010-1234x'); // false
re.test('010 12345'); // false

正则表达式还有提取子串的功能,
exec()提取子串

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值