我的javascript入门指南-2
来源:互联网 发布:mikumikudance mac版 编辑:程序博客网 时间:2024/06/05 07:52
先按普遍支持的es5语法来划分
- 数据类型
- 基本数据类型(原始类型)
- Number
- String
- String
- Null
- Undefined
- 引用数据类型(Object)(对象类型)
- Function
- Date
- Array
- RegExp
- 等等…
- 基本数据类型(原始类型)
如果算上es6的话基本类型会再多一个Symbol
- 对象类型分类
- 本地对象(就是指js中的引用类型)
- Object
- Function
- Array
- String
- Boolean
- Number
- Date
- RegExp
- Error
- EvalError
- RangeError
- ReferenceError
- SyntaxError
- TypeError
- URIError
- 内置对象
- Global
- Math
- 宿主对象
- BOM
- DOM
- 本地对象(就是指js中的引用类型)
1. 数字
- 特点:javascript中不区分整数值和浮点数值,所有的数字均用浮点数值表示。
- 一个数字直接出现在javascript中,我们称之数字直接量。
- javscript同样可以识别十六进制的值。16进制是指以“0x”或“0X”为前缀其后跟随十六位进制数串的直接量。十六位进制值是0-9之间的数字和a(A)-f(F)之间的字母组成a-f的字母对应表示数字10-15
2. 运算符:+、-、*、/、%等。
- JavaScript中算术溢出不会报错,上溢出时结果为Infinity,下溢出时结果为-Infinity
- JavaScript中被0整除不会报错,会返回Infinity或者-Infinity,但是0除以0返回NaN
- JavaScript中NaN不等于NaN,负值0于正值0相等
3. 文本
1. 形式:javascript用16位值组成不可变的有序序列表示文本。它们通常来自于Unicode字符集。2. 字符串直接量:在javascript中字符串直接量是由单引号或双引号括起来的字符序列。3. 字符串间可以通过+号拼接。
4. 转义:javascript的转义通过“\”去实现。比如\n就是一个转义字符,它表示换行。
5. 日期与时间
JavaScript中包括Date构造函数,用来创建表示日期和时间的对象;
6. 字符串直接量
JavaScript中字符串直接量是由单引号或双引号括起来的字符序列,单引号定界的字符串可以包含双引号,双引号定界的字符串也可以包含单引号;
字符串直接量可以拆分成多行(ECMAScript5之后才可以),每行必须用\结束,反斜线和行结束符不算是字符串直接量的内容;在使用单引号的时候要注意英语
单词中的撇号,使用时应进行转义;
6.1 转义字符
6.2 字符串的使用
JavaScript中字符串是固定不变的,类似replace()与toUpperCase()等方法都是返回新的字符串,原字符串本身是没有改变的;
- 字符串属性
- 字符串提供很多调用方法:
7. javascript的浮点数和四舍五入.
- javascript采用IEEE-754浮点数表示法。这是一种可以精确表示分数却无法精确表示小数的表示法。也就是我们常说的javascript浮点运算能力弱。它没办法精确表示0.1这样的简单数字。
8.javascript语言核心包括DATE()函数,它为日期计算提供了很多API。具体的之后详解。
9. javascript定义了RexExp()构造函数,用来创造匹配文本的对象。也就是我们说的正则。正则虽然不是基本类型,却可以有直接量写法(字面量)。同样它也具备很多API。
10. 布尔值:用来指代真和假,通过保留字true或false表示。
11. 模式匹配
JavaScript中定义了RegExp()构造函数,用来创建表示文本匹配模式的对象 ,这些模式成为“正则表达式”,RegExp不是JavaScript中的基本类型,是一种特殊对象,与Date相似。
在两条斜线之间的文本构成一个正则表达式直接量,第二条斜线之后可以跟随一个或多个字母进行匹配模式的修饰;
- 直接语法方式: /pattern/attributes
创建RegExp对象方法: new RegExp(pattern,attributes);
1、参数说明
参数pattern是一个字符串,制定了正则表达式的模式或者其他正则表达式;参数attributes是一个可选的字符串,包括属性’g‘,’i‘,’m‘,分别用于指定匹配全局、区分大小写匹配,匹配多行;
2、返回值说明
一个新的RegExp对象,具有指定的模式和标志,如果pattern是正则表达式而不是字符串,那么 RegExp() 构造函数将用与指定的 RegExp 相同的模式和标志创建一个新的 RegExp 对象。如果不用 new 运算符,而将 RegExp() 作为函数调用,那么它的行为与用 new 运算符调用时一样,只是当 pattern 是正则表达式时,它只返回 pattern,而不再创建一个新的 RegExp 对象。
3、抛出说明
SyntaxError - 如果 pattern 不是合法的正则表达式,或 attributes 含有 "g"、"i" 和 "m" 之外的字符,抛出该异常。TypeError - 如果 pattern 是 RegExp 对象,但没有省略 attributes 参数,抛出该异常。
- RegExp中的修饰符
修饰符 描述 i 执行对大小写不敏感的匹配。 g 执行全局匹配(查找所有匹配而非在找到第一个匹配后停止)。 m 执行多行匹配。- RegExp中的方括号
- RegExp中的元字符
- RegExp中的量词
RegExp中的对象属性
属性 描述 global RegExp 对象是否具有标志 g。声明了给定的正则表达式是否执行全局匹配,该标志被设置则属性为true,未设置为false ignoreCase RegExp 对象是否具有标志 i,设置了i标志则返回true,否则返回false; lastIndex 一个整数,标示开始下一次匹配的字符位置。该属性存放一个整数,它声明的是上一次匹配文本之后的第一个字符的位置.上次匹配的结果是由方法 RegExp.exec() 和 RegExp.test() 找到的,它们都以 lastIndex 属性所指的位置作为下次检索的起始点。这样,就可以通过反复调用这两个方法来遍历一个字符串中的所有匹配文本。该属性是可读可写的。只要目标字符串的下一次搜索开始,就可以对它进行设置。当方法 exec() 或 test() 再也找不到可以匹配的文本时,它们会自动把 lastIndex 属性重置为 0。 multiline RegExp 对象是否具有标志 m。是否可以进行多行匹配,如果被设置则该属性为true,否则为false source 返回正则表达式的源文本,不包括正则表达式直接量使用的定界符,也不包括g、i、mRegExp的对象方法
- 支持正则表达式的String对象的方法
方法 | 描述 | 说明 ---| --- | ---- search |检索与正则表达式相匹配的值。该参数可以是需要在 stringObject 中检索的子串,也可以是需要检索的 RegExp 对象。语法: stringObject.search(regexp);|stringObject 中第一个与 regexp 相匹配的子串的起始位置。search() 方法不执行全局匹配,它将忽略标志 g。它同时忽略 regexp 的 lastIndex 属性,并且总是从字符串的开始进行检索,这意味着它总是返回 stringObject 的第一个匹配的位置。 match |找到一个或多个正则表达式的匹配。该方法类似 indexOf() 和 lastIndexOf(),但是它返回指定的值,而不是字符串的位置。语法:stringObject.match(searchvalue)';stringObject.match(regexp); |searchvalue规定要检索的字符串值,regexp规定要匹配的模式的 RegExp 对象。如果该参数不是 RegExp 对象,则需要首先把它传递给 RegExp 构造函数,将其转换为 RegExp 对象。 replace |替换与正则表达式匹配的子串。语法:stringObject.replace(regexp/substr,replacement) |regexp/substr规定子字符串或要替换的模式的 RegExp 对象。如果该值是一个字符串,则将它作为要检索的直接量文本模式,而不是首先被转换为 RegExp 对象。 replacement一个字符串值,规定了替换文本或生成替换文本的函数。 split |把字符串分割为字符串数组。语法:stringObject.split(separator,howmany) |separator字符串或正则表达式,从该参数指定的地方分割 stringObject;howmany可选参数,该参数可指定返回的数组的最大长度。如果设置了该参数,返回的子串不会多于这个参数指定的数组。如果没有设置该参数,整个字符串都会被分割,不考虑它的长度。
12. null和undefined
1. null:是一个空对象的引用,数据类型是对象。原型链末端就是null;2. undefined:表示值的空缺。
13. 全局对象:
- 定义:全局对象是预定义的对象,作为 JavaScript 的全局函数和全局属性的占位符。通过使用全局对象,可以访问所有其他所有预定义的对象、函数和属性。全局对象不是任何对象的属性,所以它没有名称。
- 全局对象的属性时全局定义的符号,javascript可以直接使用。当打开新的页面,javascript解释器会创建一个新的全局对象,并给它一组初始属性。全局对象的属性并不是保留字,但是要当做保留字对待。
- 全局属性:比如undefined、Infinity以及NaN。
- 全局函数:比如isNaN()、isFinite()、parseInt()和eval()等。
- 构造函数:比如Date()、RegExp()、String()、Object()和Array()等。
- 全局对象:比如Math、JSON和Number对象均为该全局对象的属性。
14. 全局对象是谁?
- 在浏览器环境下:Window充当全局对象;
- 在node环境中,Global充当全局对象。
15. 不可更改的基本类型值
- 现象:任何方法都无法改变原始值。(任何方法指js中自带的函数)
- 例子:如下
var s='hello';s.toUppercase();s => 'hello' 值没变
16. 类型转换
- 显式转换:使用Boolean()、Number()、String()、Object()函数转换。
- 隐式转换:如下
1. 2+'5'='25';2. '5'-2=3;
tips:除了null和undefined外的任何值都具有toString()方法。
17. 包装对象
- 定义:在存取字符串、数字或者布尔值的属性或方法时创建的临时对象叫做包装对象
- 用法:临时变量
18. 变量声明:
- javascript程序使用var(es6之前)来声明变量,同时存入一个初始值undefined。
2.javascript的重复声明是合法无害的,相当于再次赋值。如果遗忘声明,程序会报错。
var i; //undefinedvar i=3; //3
19. 变量作用域:
- 定义:变量作用域是程序源代码中个定义变量的区域。
- 特点:javascript全局声明的变量具有全局作用域,函数中声明的是局部变量,具有局部作用域。函数参数也是局部作用域,只在函数体内有定义。
- 函数体内的局部变量优先级高于同名全局变量。
20. 函数作用域和声明提前
- javascript没有块级作用域,但是有函数作用域。
- 每个函数都会生成一个作用域,全局作用域中无法访问函数内部局部作用域的变量。
- 声明提前:
- 变量提升
- 函数提升
- 特点:函数提升会在变量提升之前,假如变量声明并且赋值了,那么同名的函数就会被覆盖掉。
21. 作为属性的变量:当声明一个全局变量时,实际上是定义了一个全局对象的属性,当用var声明时,这个属性是不可配置的,也就是这个变量无法通过delete运算符删除。
22. 作用域链:
- 定义:从局部作用域到全局作用域的搜寻顺序,是一个比较抽象的概念。
- 作用:决定了选择变量的规则,从局部向全局依次撒网,如果全局也没找到,会抛出一个异常。
- 示例如下:
情况1:
var a=2;function b () { var a=3; alert(a); //3}
情况2:
var a=2;function b () { alert(a); //2}作用域链阐述了寻找变量的规则
end
- 我的javascript入门指南-2
- 我的javascript入门指南-1
- 我的javascript入门指南-3
- 我的javascript入门指南-4
- 我的CSS入门指南
- 我的javascript权威指南-5
- 我的javascript权威指南-6
- 我的javascript权威指南-7
- 我的javascript权威指南-8
- 我的javascript权威指南-9
- 我的javascript权威指南-10
- 我的javascript权威指南-11
- 我的javascript权威指南-12
- 我的javascript权威指南-13
- Javascript入门指南
- 百万富翁入门指南2(有人问我借钱怎么办)
- JavaScript入门指南---(一)、认识JavaScript
- V8 JavaScript Engine 入门指南 2 -- Hello World
- Linux系统中一些常用命令的简单介绍
- 文章标题
- [matlab]vl_nnpool
- List集合
- mybatis-generator的使用
- 我的javascript入门指南-2
- 使用angular实现60秒倒计时(手机号注册)
- 数字信号FT、FS、DTFT、DFS、DFT
- 线性基学习笔记
- JavaScript--数组实现照片轮换
- join(),ReentrantLock结合Condition的await(),signal()的使用
- tensorflow 学习笔记 1
- 欢迎使用CSDN-markdown编辑器
- 三个数比较大小的方法