-
Notifications
You must be signed in to change notification settings - Fork 0
Open
Labels
Description
- JS组成:核心ECMAScript,文档对象模型DOM,浏览器对象模型BOM。
- 元素,在不支持或者禁用js的浏览器中显示替代内容。
- 语法:
- JS一切变量,函数名,操作符等都区分大小写。
- "use strict"指示编译器使用严格模式。
- 推荐每行后面加";"。
- 推荐每个函数都加大括号。
- 函数内定义的变量是局部变量无法在函数外访问,但是如果不是用var关键字,变量默认为全局变量,可以在外部访问,但不建议这样使用。
- JS共有五种简单数据类型和一种复杂数据类型Object:
- Undefined 只有“undifined”一个值,使用var声明变量但没有初始化,会自动付给undefined值。
- Null 只有“null”一个值。null值表示一个空对象指针,因此“typeof”检测 null 值会返回 object 类型。将变量初始化为null,使用时用这个变量保存一个对象。检查这个变量有没有保存对象,只需要判断是否为null。
- Boolean
- Number 浮点数内容占用空间是整数的两倍,因此小数点没有数字后者数字为0会自动转换为整数。极大或者极小的数字使用e表示法。3.125e7 = 31250000。3e-7 = 0.0000003。JS等符合IEEE-754标准的语言,浮点数精度都存在问题,因为有些小数无法用二进制精确表示。因此:1.0-0.9 == 0.1是 false。0.1 + 0.2 == 0.3 是 false。使用toFixed(digits) 方法设置精度可以解决问题:parseFloat((0.1 + 0.2).toFixed(10)) 输出结果为0.3。NaN是一个特殊的数值,表示一个本来要返回数值的操作未返回数值类型。isNaN()。
- String
- Object JS对象就是一组数据和功能的集合,通过new操作符和对象类型来创建。所有Object实例都会继承Object的属性和方法。
- === !== 会比较数值和类型。
- label 语句,用的比较少。with语句不建议使用。
- 函数的参数内部使用数组表示。可以不是用命名的参数而使用arguments对象访问这个数组。由于函数没有签名,因此无法真正的重载,如果定义两个相同的函数,后者会覆盖前者。
- 基本数据类型值是指简单数据段,而引用数据类型值指的是对象,后者可以添加删除属性和方法。引用类型数据的值实际上是一个指针,var obj1 = new Object(); var obj2 = obj1; 两个变量指向同一个对象,改变其中一个变量,另一个也会改变。
- 函数的参数都是按值传递的,传递基本数据类型的值时,被传递的值会被赋值给一个局部变量。当对象作为参数时,函数会将对象的值,也就是指针复制给这个局部对象,虽然是按值传递,但是两个变量指向同一个对象,改变内部局部变量也会改变外部对象。
function setName(obj){
obj.name = "a";
obj = new Object();
obj.name = "b";
}
var person = new Object();
setName(person);
alert(person.name); // 输出a
obj变量和person是两个变量,当obj指向一个新的变量时,操作将不再影响外部变量,因此参数是按值传递的。
- JS只有全局作用域和函数内部局部作用域哦,没有块级作用域(if,for等语句没有单独作用域,都属于函数作用域哦)。因此for循环内部的变量可以在for循环外部访问。
for( var i = 0; i < 10; i++) {
....
}
alert( i ); //输出 10
- 局部变量当函数结束时后自动被垃圾收集,全局变量可以设置为null,然后被垃圾回收,这样可以有效的回收内存。
- 定义对象有两种方式,new Object() 和var person = { name: "a", age: 12 };