这是我参与「第五届青训营 」伴学笔记创作活动的第 9 天
0 前面的话
今天就写点JavaScript的知识吧!知识点内容可能比较散,仅记录一下而已。这里的学习参考了部分菜鸟教程内容,如有需要,链接:www.runoob.com/js/js-obj-n…
1 正文
JavaScript Number 对象
默认情况下,JavaScript 数字为十进制显示。
但是可以使用 toString() 方法 输出16进制、8进制、2进制。
var myNumber=128;
myNumber.toString(16); // 返回 80
myNumber.toString(8); // 返回 200
myNumber.toString(2); // 返回 10000000
正负无穷大:Infinity、-Infinity。
关于 Infinity, -Infinity 和 NaN
- Infinity , -Infinity 和 NaN 都是 JavaScript 保留字,不能用作标识符,对大小写敏感。
- -Infinity 的负号与 "Infinity" 之间不能**有空格。
- -Infinity 不需要用括号包围; 1 - (-Infinity) 和 1 - -Infinity 是等价的。
- 和其他数字一样,这三者与字符串相加会得到字符串。
- 这三者不等于任何一个有限数字。
- 使用对象的 .stringgify() 方法转换为 JSON 文本时,这三者会被转换为 null 。
Infinity 运算法则
- 正数除以 0 得 Infinity。
- Infinity 加或减任何有限数字都得 Infinity 。Infinity + Infinity 或 Infinity - -Infinity 也得 Infinity 。
- Infinity 乘或除以任何有限正数得 Infinity 。Infinity 乘或除以任何有限负数得 -Infinity 。 Infinity * Infinity 或 Infinity / 0 也得 Infinity 。Infinity * -Infinity 得 -Infinity。
- Infinity - Infinity 得 NaN 。 Infinity / Infinity 得 NaN 。 Infinity * 0 得 NaN 。
- Infinity == Infinity 为真。 Infinity.isNaN() 为假。 Infinity.isFinite() 为假。 Boolean(Infinity) 为真。
-Infinity 运算法则
- 负数除以 0 得 -Infinity。
- -Infinity 加或减任何有限数字都得 -Infinity 。-Infinity + -Infinity 或 -Infinity - Infinity 也得 -Infinity 。
- -Infinity 乘或除以任何有限正数得 -Infinity 。-Infinity 乘或除以任何有限负数得 Infinity 。 -Infinity * Infinity 或 -Infinity / 0 也得 -Infinity 。-Infinity * -Infinity 得 Infinity。
- -Infinity - -Infinity 得 NaN 。 -Infinity / -Infinity 得 NaN 。 -Infinity * 0 得 NaN 。
- -Infinity == -Infinity 为真。 -Infinity.isNaN() 为假。 -Infinity.isFinite() 为假。 Boolean(-Infinity) 为真。
NaN 运算法则
- 0 / 0 得 NaN 。上面也有一些得 NaN 的情况。
- NaN 加、减、乘或除以任何数(包括 Infinity 、 -Infinity 和 NaN 本身)得 NaN 。
- 无论变量 x 取何值(包括 undefined 、 null 、 true 、 false 、 Infinity 、 -Infinity 和 NaN 本身),NaN == x 恒为假。NaN.isNaN() 为真。 NaN.isFinite() 为假。 Boolean(NaN) 为假。
JavaScript 字符串(String) 对象
下表列出其他特殊字符,可以使用反斜线转义特殊字符:
| 代码 | 输出 |
|---|---|
| \' | 单引号 |
| \" | 双引号 |
| \\ | 斜杆 |
| \n | 换行 |
| \r | 回车 |
| \t | tab |
| \b | 空格 |
| \f | 换页 |
JavaScript Date(日期) 对象
为日期对象设置了一个特定的日期 (2010 年 1 月 14 日):
var myDate=new Date();
myDate.setFullYear(2010,0,14);
将日期对象设置为 5 天后的日期:
var myDate=new Date();
myDate.setDate(myDate.getDate()+5);
注意: 如果增加天数会改变月份或者年份,那么日期对象会自动完成这种转换。
两个日期比较
日期对象也可用于比较两个日期。
下面的代码将当前日期与 2100 年 1 月 14 日做了比较:
var x=new Date();
x.setFullYear(2100,0,14);
var today = new Date();
if (x>today)
{
alert("今天是2100年1月14日之前");
}
else
{
alert("今天是2100年1月14日之后");
}
JavaScript Array(数组) 对象
Js 中为数组提供了多种遍历方式
const ary = ['a', 'b', 'c'];
// 最基本的方式, 只能遍历下标有序递增的数组
for (let i=0; i<ary.length; i++) {
console.log(i, ary[i]); // 0 a 1 b 2 c
}
// in:每遍历一次数组指针向后移动一位, 并得到当前数组元素值的下标, 可以通过 ary[key] 来访问数组元素值
for (let key in ary) {
console.log(key, ary[key]); // 0 a 1 b 2 c
}
// of:每遍历一次数组指针向后移动一位, 并得到当前数组元素的值, 处理二维数组时极为方便
for (let value of ary) {
console.log(value); // a b c
}
Js还为数组对象内置了多种迭代方法, 处理数组时极为方便
/**
* forEach(function)
*
* 该方法接受一个函数作为参数, 该函数拥有两个参数, 分别为数组的值、键
* 该方法没有返回值
*/
ary.forEach((value, key) => {
console.log(key, value); // 0 a 1 b 2 c
})
/**
* map(function)
*
* 该方法接受一个函数作为参数, 该函数拥有两个参数, 分别为数组的值、键
* 可以在传入的函数中返回相应的值,你每次迭代时返回的值会被map方法组装成一个新数组作为返回值返回
*/
var result = ary.map((value, key) => {
return value + '_runoob.com';
})
console.log(result); // ['a_runoob.com', 'b_runoob.com', 'c_runoob.com']
数字索引与非数字索引
JavaScript 数组只支持数字索引,非数字索引指的是对象的属性了。
JavaScript 的数组可以看做是特殊的对象(object),对象的属性有两种表示方法。
var a=Object();
a.myattr="runoob";
a["myattr"]="runoob";
查看以下实例:
var a=new Array();
a['a1']=1;
a['a2']=2;
a.length // 输出0
实例中由于你没有给数组的元素赋值,所以 a 数组的长度也没有被创建出来,此时 a.length 输出结果为 0。
var a=new Array();
a['a1']=1;
a['a2']=2;
a[2]=3;
a.length // 输出3
在最后一行代码中数组元素 a[2] 赋值了,此时 JavaScript 会给数组 a 创建一个长度为 3 的空间,并在第三个元素中赋以3,但是元素1和元素2都没有赋值,所以此时a[0]和a[1]是没有值的。
如果要使用的是一个完全由“字符串下标”组成的数组,那还是将其声明为一个 Object 类型的对象要更好一些。
var a=new Array();
a['a1']=1;
a["100"]=3;
a.length // 输出 101
Javascript 数组下标值的范围为 0 ~ 232。对于任意给定的数字下标值,如果不在此范围内,Javascript 会将它转换为一个字符串,并将该下标对应的值作为该数组对象的一个属性值而不是数组元素,例如 array[-1] = "yes" 其实就相当于给 array 对象添加了一个名为 -1 的属性,属性值为 yes。如果该下标值在合法范围内,则无论该下标值是数字还是数字字符串,都一律会被转化为数字使用,即 array["100"] = 0 和 array[100] = 0 执行的是相同的操作。
JavaScript Math(算数) 对象
使用了 Math 对象的 round 方法对一个数进行四舍五入。
document.write(Math.round(4.7));
上面的代码输出为:
5
JavaScript RegExp 对象
什么是 RegExp?
正则表达式描述了字符的模式对象。
当您检索某个文本时,可以使用一种模式来描述要检索的内容。RegExp 就是这种模式。
简单的模式可以是一个单独的字符。
更复杂的模式包括了更多的字符,并可用于解析、格式检查、替换等等。
您可以规定字符串中的检索位置,以及要检索的字符类型,等等。
RegExp 修饰符
修饰符用于执行不区分大小写和全文的搜索。
i - 修饰符是用来执行不区分大小写的匹配。
g - 修饰符是用于执行全文的搜索(而不是在找到第一个就停止查找,而是找到所有的匹配)。
在字符串中不区分大小写找"runoob"
var str = "Visit RUnoob"; var patt1 = /runoob/i;
以下标记的文本是获得的匹配的表达式:
Visit RUnoob