javascript 语言核心
词法结构
- javascript 是区分大小写的,online, Online, OnLine, ONLINE 是四个不同的变量。
- HTML 是不区分大小写的。
- 严格来讲 XHTML 是区分大小写的,浏览器会 “宽容” 的正确解析。
- Unicode转义写法可以用在字符串直接量、正则表达式直接量、标识符(关键字除外)。
- 直接量:就是程序中直接使用的数据值。
- 标识符:就是一个名字,用来对变量和函数进行命名。(必须以字母,下划线,美元符开始,数字是不允许的)。
1 | "café" === “caf/u00e9” // => true |
数据类型
- 原始类型:数字、字符串、布尔值、null、undefined
- 对象类型(属性property的集合):数组(特殊的对象array)、函数(特殊的对象function)
- 构造函数:函数用来初始化一个新建的对象,我们称之为构造函数,每个构造函数定义了一类(class)对象,这一类对象可以称作是对象类型的字类型。
- javascript核心类:日期(Date), 正则 (RegExp), 错误(Error)
- 数据回收,当不再有引用指向一个对象,解释器就会认为这个对象没用了,然后会按照回收机制,对其进行回收(不一定是立即执行)。
- javascript中字符串是不可变的,没有提供任何修改已知字符串的文本内容的方法
- javascript可以自由的进行数据转换。
- javascript变量是无类型的,可以被赋予任何值。
- 不在任何函数内声明的变量,称为全局变量。
- 函数内声明的变量具有函数作用域,并且只在函数内可见。
- javascript采用64位浮点格式表示数字
1 | 最大值 + 1.7976931348623157 x 10e308 |
- 无穷大 = infinity
- 负无穷大 = -infinity
- isNaN(),如果参数是 NaN 或者一个非数字值,则返回true
- isFinite(),如果参数不是 NaN,infinity,-infinity,则返回true
1 | var x = .3 - .2; // => 0.09999999999999998 |
- 当使用单引号来界定字符串时,要注意英文,撇号和单引号是一个字符。(个人推荐用双引号来界定字符串)
- 转义字符
- javascript中字符串是固定不变的,replace(), toUpperCase() 都返回一个新的字符串,原值并未发生改变。
- undefined, null, 0, -0, NaN, “” 会被转换为 false,所有其他值包含对象和数组都会转换为true
- null 和 undefined 用 === 来区分,typeof 可以看出区别。
1 | typeof null = Object; |
- 全局属性,undefined,infinity,NaN
- 全局函数,isNaN(),parseInt(),parseFloat(),eval()
- 构造函数,Date(),RegExp(),String(),Object(),Array()
- 全局对象,Math,JSON
- 字符串,数字,布尔值的属性都是只读的,不能定义新属性
- == 会将原始值和其包装对象视为相等,=== 不会,typeof 可以看出原因
1 | var s = "test", n = 1, b = true; |
- 原始值是不可更难改的,任何方法都无法更改或突变一个原始值。
- 比较两个单独的字符串,当且仅当它们的长度相等,且每个索引的字符都相等时,javascript才认为它们相等
- 对象是引用类型的
- toFixed() 从不会采用指数计数法
- toExponential() 使用指数计数法
- 对象转字符串先调用toString(),如果有方法且返回原始值,则返回结果,如果没有toString()方法,或者返回不是原始值,则继续调用valueOf()方法
- 对象转数字与上条相反,先valueOF()后toString()
- 日期类是javascript中唯一的预先定义类型。
- 动态语言,不会给任何变量指定数据类型,只会在第一次赋值变量时,在内部记录下数据类型,代表:Python,Ruby,Javascript
- C/C++静态语言代表,C#,Java
- 变量作用域指代码中定义这个变量的区域
- 参数属于局部变量
- 局部变量优先级高于同名全局变量
- javascript 是函数作用域,变量在声明它的“函数体以及这个函数体嵌套的任意函数体内”都是有定义的,这个特性称之为“变量提升”
- 声明一个全局变量时,是定义了全局对象上的一个属性
- 使用var声明一个变量时,这个属性不可配置,不能被 delete
- 当定义一个函数时,它实际保存了一个作用域链,当调用这个函数时,他创建一个新的对象来存储它的局部变量,并将这个对象添加至保存作用域链的对象上。
日期和日历
待补充
正则表达式
待补充
面向对象
待补充