JavaScript:目前来说,是最流行的脚本语言。
ECMAScript:JavaScript的标准
step:
js不区分小数和整数;都为number。
特殊:Infinity 表示无限大。NaN:not a number 。string:undefined。
=
==等于(类型不一样,值一样会被判断成true)
===绝对等于(类型和值都要一样)
特殊:NaN===NaN NaN与所有的数值都不等,包括自己。只能通过isNaN(NaN)来判断是否是NaN;
浮点数问题:(基础精度问题,这里不加以赘述。)
例:console.log(1/3===(1-2/3)); 为false
解决:Math.abs(1/3===(1-2/3))<0.000001;设置位数
null 空、undefined 未定义
数组 var arr=[];
对象 var arr={};
局部变量建议使用let来定义
大小写变换方法:toUpperCase();toLowerCase();
substring 截取例:
hello world! 截取(3,7),那就是4 5 6 空格也算一个下标 所以答案是lo w
arr.indexof();通过元素获得下标索引
slice()截取array的一部分,返回一个新数组。
可以用push和pop压入和弹出
push(数据)添加到尾部,pop()调用一次就弹出一次尾部也就是减少
unshift()添加到头部,shift()删除头部
排序:sort()正向。 reverse()反序、concat()拼接 原来的数组依然存在
连接符 join();
map和set
set:去重,无序不重复的集合。
map.set 加入。set.add加入。set.delete()删除。set.has()是否有这个元素。
迭代方法:
遍历数组:
var arr=[1,2,3,4,5];
for (const iterator of arr) {
console.log(iterator);
}
遍历map:
var map=new Map([["tommy","23"],["Jenne","25"],["Lisa","24"]])
for (const iterator of map) {
console.log(iterator);
}
set同理
arguments包含所有的参数 rest获取除了已定义参数之外的参数。
例:
function test(a,b,c,rest) {
console.log("a",a)
console.log(rest)
} rest=b,c
闭包
不知道为什么这个争议这么大,我觉得还蛮简单的。这里也提出来说一说。
其实简单理解来说,就是为了给特有的这几个变量开辟一个环境而诞生的函数+变量的一个理念。
什么时候会用到这个呢?
比如你想进行运算,并且每次运算都是基于上一次而做的,用闭包就可以。 因为你创造的这个环境一直都存在内存中,不会在方法被调用之后被垃圾回收机制回收。正因为这样,所以要慎用闭包,否则性能肯定会降低。
用处:读取函数内部变量、内存一直存在,不会在调用之后被回收。配合return使用更佳。
实现:
声明变量、声明函数、在函数里使用这个变量就可以算是一个闭包。