关于javaScript学习的一些记录

知识点

  1. List item

  2. if语句后面没有大括号时则只执行一条语句

  3. 等号的作用:
    =:赋值表达式
    ==:相等运算符
    ===:严格相等运算符

  4. 空数组[ ]和空对象{ }对应的布尔值都是true

  5. javascript内部,所有数字都是以64位浮点数存储,所以javascript的底层根本没有整数

  6. +0和-0在大部分场合都是相等的 只有作分母时是不一样的 (1/+0===1/-0) 返回false 因为0不能作分母
    1/+0 返回 Infinity 1/-0 返回 -Infinity

  7. NaN 表示 “非数字” 数据类型属于Number NaN不等于任何值,也不等于它本身
    NaN 与任何数的运算都等于NaN 包括它本身 是唯一不等于自身的值
    任何数值与NaN比较都返回false

  8. Infinity大于一切数值 除了NaN -Infinity小于一切数值 除了NaN
    Infinity 与NaN比较总是返回false

  9. parseInt : 将字符串转为整数,它的转换方法是 一个个字符依次转换,当遇到不能
    转换的字符时则停止转换 返回已经转好的部分
    parseInt 的第二个参数可以帮助进行进制之间的转换。

  10. 单引号内部需要使用单引号时,要在单引号前面加反斜杠\ 双引号内部要使用双引号也是一样

  11. 三种函数声明方式:
    直接声明函数 function 函数名(){ }
    使用构造函数 var 函数名=new function(){ }
    函数表达式 var 函数名= function(){ };

  12. 函数的 length 属性返回函数定义时传入的参数的个数

  13. 函数执行时所在的作用域 是定义时的作用域 不是调用(运行)时的作用域

  14. 函数的参数如果有两个相同的值,那么总是会去后面的那个,即使是后面那个参数未定义或为空。
    比如:
    在这里插入图片描述

  15. arguments对象只有在函数内部才可以使用 arguments对象虽然很像数组,但它是一个对象,数组的方法它不能直接使用

  16. 将arguments对象转为数组的方法:
    在这里插入图片描述

  17. 清空数组的一个简单方法:将数组的length设为0

  18. Math.abs(); 计算一个值的绝对值。 Math.abs(-1); // 1

  19. 比较运算符可以比较各种类型的值,不只是数值

  20. +0===-0 //返回 true

  21. 严格相等运算符有一个对应的严格不相等运算符(!==),它的算法是先求严格相等运算符的结果,然后返回相反值,如下:
    在这里插入图片描述

  22. 两次取反是将一个数转为布尔值的简便写法

  23. 位运算符只对整数有效,当遇到小数时会自动去除小数部分,所以 一个小数与0进行二进制或运算 相当于给这个小数取整 (但是不合适超过32位整数最大值2147483647)

  24. 二进制否运算符巧记:一个数与自身的取反值相加等于-1 alert(~-4) //3
    对一个小数进行两次二进制否运算,相当于给这个小数取整,因为所有的位运算只对整数有效,小数会自动去除小数部分。这是所有取整方法中最快的一种

  25. 逗号运算符,对两个表达式求值并返回后一个表达式的值
    在这里插入图片描述
    上面表达式先执行逗号之前的操作,然后返回逗号后面的值。

  26. js的数据类型分为原始类型和引用类型
    原始类型包括(undefined、number、boolean、String、null
    引用类型:Object
    使用typeof 检查null的数据类型,结果会返回 object (历史原因)

  27. 只使用严格相等运算符(===)

  28. console.log方法支持以下占位符,不同类型的数据必须使用对应的占位符
    %s 字符串
    %d 整数
    %i 整数
    %f 浮点数
    %o 对象的链接
    %c CSS格式字符串

  29. 关于Object.keys()和Object.getOwnPropertyNames()方法:
    他们的参数都是对象,返回的都是数组(返回对象的所有属性名)
    不同的是,Object.keys()只能返回可枚举的属性(不可遍历的属性也不能返回),
    Object.getOwnPropertyNames()还可以返回不可枚举的属性
    这两个方法还可以用于输出对象的属性的个数 因为 javascript 没有提供计算对象属性 个数的方法,所以用这个两个替代
    在这里插入图片描述

  30. 其他方法:
    Objest.getOwnPropertyDescriptor()只能用于对象自身的属性,不能用于继承的属性。

  31. 使用 typeof 判断数组 会返回 “Object” 所以当我们需要判断一个值是否为数组时,应该使用 Array 的 isArray() 可以识别数组。

  32. 数组的push和pop方法:
    数组的push方法给数组增添成员,返回添加新元素后的数组长度
    数组的pop方法 删除数组的末尾值,返回删除的元素
    数组的shift和unshift方法:
    数组的shift方法删除数组的第一个元素,返回删除的元素
    数组的unshift方法在数组的第一个位置添加元素并返回添加元素后的数组长度
    这四个方法都会改变原数组

  33. 可以在原型对象的prototype上面自定义方法和属性,供原始类型的值直接调用
    在这里插入图片描述

  34. javascript的三个包装对象:Number、boolean、String

  35. toString方法只能将十进制的数转换为其他进制,如果要将其他进制转为十进制,要使用parseInt方法

  36. toFixed方法现将一个数转为指定位数(小数部分的个数)的小数,然后返回这个小数对应的字符串,参数为小数位数,有效范围是0—20,超出范围抛出RangeError 错误

  37. toExponential 方法是将一个数转换成科学计数法的形式,参数是小数点后有效数字的位数,有效范围是0—20,超出范围抛出RangeError 错误

  38. toPrecision方法用于将一个数转为指定位数的有效数字(这个数整数部分和小数部分总的个数),参数为有效数字的位数,有效范围1—21,超出范围抛出RangeError 错误,toPrecision 方法用于四舍五入不可靠,跟浮点数不是精确存储有关。

  39. String的静态方法(定义在对象本身,而不是定义在对象实例中的方法)
    String.fromCharCode(),参数是一个或多个值,代表Unicode码点,返回值是这些码点组成的字符串,不支持码点数大于 0xFFFF(十进制的65535) 的字符

  40. Math对象的静态属性 (这些属性都是只读的不能修改)
    Math.E 常数e
    Math.LN2 2的自然对数
    Math.LN10 10的自然对数
    Math.LN2E 以2为底e的对数
    Math.10E 以10为底e的对数
    Math.PI 常数π
    Math.SQRT1_2 0.5的平方根
    Math.SQRT2 2的平方根

  41. Math对象的静态方法
    Math.abs() 绝对值
    Math.ceil() 向上取整
    Math.floor() 向下取整
    Math.max() 最大值
    Math.min() 最小值
    Math.pow() 两个参数,指数运算
    Math.sqrt() 平方根,负数返回NaN
    Math.log() 自然对数 返回以e为底的自然对数值
    Math.exp() e的指数
    Math.round() 四舍五入
    Math.random() 随机数 返回0—1之间的伪随机数,可能等于0,但一定小于1

  42. Math对象的三角函数方法
    Math.sin() 返回参数的正弦(参数为弧度值)
    Math.cos() 返回参数的余弦(参数为弧度值)
    Math.tan() 返回参数的正切(参数为弧度值)
    Math.asin() 返回参数的反正弦(返回值为弧度值)
    Math.acos() 返回参数的反余弦(返回值为弧度值)
    Math.atan() 返回参数的反正切(返回值为弧度值)

RegExp

新建正则表达式:

使用字面量:正则表达式以斜杠“/”表示开始和结束 var reg=/xyz/;
使用RegExp构造函数:var reg=new RegExp(‘xyz’);
他们是等价的

RegExp构造函数还可以有第二个参数,表示修饰符

在这里插入图片描述

正则表达式的实例属性

1、修饰符相关
RegExp.prototype.ignoreCase:返回一个布尔值,表示是否设置了i修饰符(只读)
RegExp.prototype.global:返回一个布尔值,表示是否设置了g修饰符(只读)
RegExp.prototype.multiline:返回一个布尔值,表示是否设置了m修饰符(只读)
RegExp.prototype.flags:返回一个字符串,包含了已经设置的所有修饰符,按字母排序。(只读)
2、其他实例属性
RegExp.prototype.lastIndex:返回一个整数,表示下一次开始搜索的位置(可读写)
RegExp.prototype.source: 返回正则表达式的字符串形式,不包括反斜杠 (只读)

正则表达式的实例方法
RegExp.prototype.test()方法,返回一个布尔值,表示当前模式是否能匹配参数字符串,若正则表达式带有g修饰符,则每一次test方法都从上一次结束位置开始向后匹配
RegExp.prototype.exec()方法,用来返回匹配结果,如果发现匹配就返回一个数组,成员就是匹配成功的子字符串,否则返回null。
若正则表达式中包含圆括号,则返回的数组会包含多个成员,第一个成员是整个匹配的结果,后面的成员就是圆括号对应的匹配成功的组
在这里插入图片描述

exec()方法的返回数组具有两个属性:
input:整个字符串
index:整个模式匹配成功的开始位置。
在这里插入图片描述

匹配规则

字面量字符和元字符
字面量就是可以直接看出来的
元字符:
(1)点字符,匹配除回车(\r)、换行(\n)、行分隔符(\u2028)和段分隔符(\u2029)以外的所有字符。比如/c.t/匹配c与t之间包含任意一个字符的情况(不包括换行符 \n),可以是c1t、cbt,但不能是caat。
(2)位置字符:用来提示字符所处的位置,^表示字符开始位置,$表示字符结束位置
在这里插入图片描述
(3)选择符(|): 在正则表达中表示或关系
(4)\ * + ? () [ ] { }

转义符

正则表达式中,那些有特殊含义的元字符,若要匹配他们本身,就需要在他们前面加上反斜杠“ \ ” 比如要匹配+ 就要写成" + "
正则表达式中,需要转义的有12个字符:^、.、[、$、(、)、|、*、+、?、{和\。需要特别注意的是,如果使用RegExp方法生成正则对象,转义需要使用两个斜杠,因为字符串内部会先转义一次。

特殊字符

\cX 表示Ctrl-[X],其中的X是A-Z之中任一个英文字母,用来匹配控制字符。
[\b] 匹配退格键(U+0008),不要与\b混淆。
\n 匹配换行键。
\r 匹配回车键。
\t 匹配制表符 tab(U+0009)。
\v 匹配垂直制表符(U+000B)。
\f 匹配换页符(U+000C)。
\0 匹配null字符(U+0000)。
\xhh 匹配一个以两位十六进制数(\x00-\xFF)表示的字符。
\uhhhh 匹配一个以四位十六进制数(\u0000-\uFFFF)表示的 Unicode 字符

字符类

表示与一系列放在方括号中字符可供选择,只要其中一个匹配就可以了
(1)脱字符 ^ 指除了字符类中的字符,其它字符都可以匹配,若方括号中只有^,则表示可以匹配一切字符。(脱字符只有在第一个位置才有特殊含义)
(2)连字符(-),连字符只有出现在方括号内才有意义
注意:连字符不能过大范围的使用,否则会出现想不到的结果

预定义模式

预定义模式指的就是某些常见模式的简写形式
\d 匹配0-9之间的任意数字,相当于[ 0-9 ]
\D 匹配所有0-9以外的字符,相当于[ ^0-9 ]
\w 匹配任意的字母、数字、和下划线,相当于[A-Za-z0-9]
\W 除所有字母、数字、下划线以外的字符,相当于 [^A-Za-z0-9]
\s 匹配空格(包括换行符、制表符、空格符等),相等于[ \t\r\n\v\f]。
\S 匹配非空格的字符,相当于[^ \t\r\n\v\f]。
\b 匹配词的边界。
\B 匹配非词边界,即在词的内部

重复类

模式的精确匹配次数,{n}表示重复n次,{n,}表示重复至少n次,{n.m}表示重复不小于n次,不大于m次

量词符

量词符用来设定某个模式出现的次数

? 问号表示某个模式出现0次或1次,等同于{0, 1}。
*星号表示某个模式出现0次或多次,等同于{0,}。
+加号表示某个模式出现1次或多次,等同于{1,}。

贪婪模式

即最大可能匹配,一直匹配直到下一个字符不满足匹配规则
要想变为非贪婪模式,即只要匹配到一个就停止匹配,在量词符后面加一个问号即可变成非贪婪模式

修饰符

修饰符表示模式的附加规则,放在正则表达式的尾部,可以单个使用,也可以多个一起使用。
(1)g修饰符,表示全局匹配(global),加了它以后,正对象将匹配所有符合条件的结果。每次匹配都是从上次匹配成功后开始向后匹配。
(2)i修饰符,默认情况下,正则对象区分字母的大小写,加上以后不考虑大小写
(3)m修饰符,加上后会修改^和 的 行 为 , 和 的行为,^和 除了匹配字符串的开始和结尾处,还可以匹配字符串的行首与行尾。

组匹配

非捕获组:(?:x)返回结果没有该组匹配的内容
先行断言:x(?=y),x只有在y前面才匹配,y不会被计入返回结果
先行否定断言:x(?!y),x只有不在y前面才匹配,y不会被计入返回结果

     ## js常用方法

1、数组的join()方法:将所有的数组成员以指定参数为连接符连接成字符串 并返回这个字符串(若不提供参数,默认用逗号分隔) 原数组不变
2、数组的concat()方法:用于多个数组的合并,将新数组的成员添加到原数组成员的后面并返回一个新的数组,原数组不变。
在这里插入图片描述
3、reverse()方法:将数组颠倒并返回颠倒后的数组,该方法改变了原数组
4、slice() 方法:该方法的作用是截取数组,第一个参数为开始位置,第二个参数为结
束位置(但不包括该位置) 返回截取的数组,不改变原数组。
当参数为负数时,则从数组尾部往前读,但还是向后截取。当第二个参数小于第一个参数或第一个参数大于数组长度时,返回一个空数组。当slice()没有参数,则返回一个与原数组相同的数组,相当与 数组的拷贝。
5、splice()方法:该方法用于删除添加数组成员,有若干参数,第一个参数是删除的开始位置,第二个参数是删除的数量,若有更多的参数,则从删除位置开始添加这些参数到数组,返回被删除的数组成员,该方法会改变原数组,当参数为负数或只有一个参数时,与slice()方法类似。
6、sort()方法:该方法对数组成员进行排序,默认按照字典顺序排序(不是按照大小),如果想要数组按照自己的想法排序可以传入一个函数参数。排序后,原数组被改变。
在这里插入图片描述
7、map()方法:该方法将数组的所有成员依次传入参数函数,做一定的运算后再依次返回并存入一个新数组中,该方法返回这个数组。原数组没有变化。
map()方法接受一个函数作为参数,map方法向它传入三个参数(当前数组成员,当前成员位置,数组本身)
map()方法还可以有第二个参数,用来绑定回调函数内部的this变量
在这里插入图片描述
8、forEach()方法:数组的forEach方法和map方法类似,只是它不返回数组,只是对数据进行操控,用法、参数的使用都与map方法一样,他们都会跳过数组的空位。
9、filter()方法:参数是一个函数,所有数组成员依次执行该函数,返回结果为true的成员组成一个新数组返回,不会改变原数组。
filter方法的参数函数可以接受三个参数(当前成员,当前位置,整个数组)。
filter方法可以有第二个参数,用来绑定参数函数内部的this变量。
10、some()和every()方法:他们接受一个函数作为参数,所有数组成员依次执行该函数,该函数接受三个参数:当前成员,当前位置,整个数组。some方法只要一个成员返回true,则整个some方法的返回值就是true,every方法是所有数组成员返回true该方法才返回true。对于空数组,some方法返回false,every方法返回true,回调函数都不会执行。
11、indexOf()方法和lastIndexOf()方法:indexOf()方法返回给定元素在数组中出现的第一个位置,没有则返回-1.可以有第二个参数,代表搜索的开始位置。lastIndexOf()方法返回给定元素在数组中出现的最后一个位置,没有则返回-1.

总结:原数组改变的方法: push、pop、shift、unshift、reverse、splice、sort
原数组不变的方法:join、concat、slice、map、filter

这些方法中,返回值是数组的可以链式使用

## String的实例方法

1、String.prototype.charAt():返回指定位置的字符。参数为负数或大于等于字符串的长度时返回空字符串。
2、String.prototype.charCodeAt(): fromCharCode的逆用,将字符串指定位置的字符转换为Unicode码,参数为字符串的下角标,当没有参数时,返回字符串首字符的Unicode码点。
3、concat()方法、slice()方法与数组的这几个方法用法相同
4、String.proyotype.substring()方法与slice用法相似,只是对于参数的解析不同:当第二个参数小于第一个参数时,javascipt引擎会将这两个参数互换位置,当参数为负数时,会将参数转换为0,其他情况与slice()一样。由于substring方法规则违反直觉,因此优先使用slice方法
5、String.prototype.substr()方法也是用于截取字符串,与slice()和substring()方法作用相同。它的第一个参数为子字符串的开始位置,第二个参数为子字符串的长度。若第二个参数省略,则表示截取从开始位置一直到字符串结束。如果第一个参数为负数,则表示倒着计算开始位置,若第二个参数为负数,则自动
转为0,即返回空字符串
6、String.prototype.indexOf()方法和String.prototype.lastIndexOf()方法与数组的这两个方法用法相同,唯一区别是lastIndexOf()方法支持第二个参数,代表从该位置起向前匹配
7、 String.prototype.trim()方法去除字符串两边的空格、换行符、制表符、回车符等,返回一个新字符串,不改变原字符串。
8、String.prototype.toLowerCase()方法与String.prototype.toUpperCase()方法用于将一个字符串全部转为大写或小写字符串,它们都返回一个新字符串,不改变原字符串。
9、String.prototype.match()方法,用于确定原字符串中是否含有某个参数子字符串,返回一个数组,成员为匹配的第一个字符串。返回的数组有index属性和input属性,分别表示匹配字符串开始的位置和原始字符串。
10、String.prototype.search()方法和String.prototype.replace()方法。search方法与match方法用法基本相同,但是search返回匹配的第一个位置,匹配不到则返回-1,replace方法用于替换匹配的字符串,一般情况下只替换第一个匹配。
11、String.prototype.split()方法用于对字符串的分隔,按照给定规则分隔字符串,返回分隔出来的字符串组成的数组。如果分隔规则是空字符串,则返回数组是原字符串的每一个字符。
12、String.prototype.localeCompare()方法用于比较两个字符串,返回一个整数,小于0代表第一个字符串小于第二个字符串,大于0表示第一个字符串大于第二个字符串,为0 代表两个字符串相等(该方法的特点是会考虑自然语言的顺序),该方法可以有第二个参数,代表指定所使用的语言(默认是英语)。

观阮一峰的js教程–笔记

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值