1.数据类型:
1.string 2.number 3.boolean
4.undefined:声明但未初始化
5.object6.null
2.js组成:ECMCscript,文档对象模型(DOM), 浏览器对象模型(BOM)
3.<sscript>标签:
defer: defer="defer",立即下载,延迟执行(页面所有的代码都执行完毕之后,js才会执行)
async: async, 与defer类似,都是改变处理脚本的行为。与defer不同的是,标记位async的脚本并不保证按照指定他们的先后顺序执行。async的母的是为了不让页面等待两个脚本下载和执行,从而异步加载页面其他内容。为此建议异步脚本不要再加载期间,修改dom。异步脚本一定会在在面的load事件前面执行。但可能会在DOMContentLoaded时间触发之前或之后执行。
位置:浏览器先解析不使用defer的script元素种的代码,然后再解析后面的内容。所以script标签一般应该放在页面最后,即主要内容后面,</body>前面。
4.文档模式:
<!DOCTYPE html>
5.<noscript>元素,什么情况下使用?A.浏览器不支持脚本B.浏览器支持脚本,但脚本被禁用。
6.严格模式: "use strict";
7. A.undefined == null // true
B.undefined === null //false
C.var car = null; console.log(typeof car); //"object"
8.NaN:非数值是一个特殊的数值
NaN == NaN //false
isNaN(NaN) //true
isNaN(true) //false
isNaN(10) //false
Number(true | false) // 1 | 0
Number(null | undefined) // 0 | NaN
Number("") // 0
parseInt("") //NaN
toString()转换字符串
!false // true !"blue" //false !0 //true !NaN //true !"" //true !1234 //false
9.typeof是检测基本数据类型的
instanceof是检测引用类型的
10.每个函数都有他的执行环境。当代码在一个环境中执行时,会创建变量对象的一个作用域链。作用域链的用途:是保证对执行环境有权访问的所有变量和函数的有序访问。全局执行环境的变量对象始终都是作用域链中的最后一个对象。
11.内部环境可以通过作用与链访问外部所有的外部环境,但是内部环境不能访问外部环境的所有变量和函数。这些环境之间是线性,有次序的。
12.执行环境的类型:全局和局部(函数)
13.js变量可以用来保存两种类型的值: 基本类型值和引用类型值。基本类型值源自于以下5种基本数据类型:undefined,null,boolean,number, string。基本类型值和引用类型值具备以下特点:
a.基本类型值在内存种占固定大小,因此被保存在栈内存中;
b.从一个变量向另一个变量复制基本类型的值,会创建这个值的一个副本;
c.引用类型的值是对象,保存在堆内存中;
d.包含引用类型值的变量实际上包含的并不是对象本身,而是一个指向该对象的指针;
e.从一个变量向另一个变量复制引用类型的值,复制的其实是指针,因此两个变量最终都指向同一个对象;
f.确定一个值是那种基本类型可以用typeof操作符,确定一个值是那种引用类型可以用instanceof操作符;
14.所有变量(包括基本类型和引用类型)都存在于一个执行环境(也称作用域)当中,这个执行环境决定了变量的生命周期,以及哪一部分代码可以访问其中的变量。以下是执行环境的总结:
a.执行环境有全局执行环境(也称为全局环境)和函数执行环境之分;
b.每次进入一个新执行环境,都会创建一个用于搜索变量和函数的作用域链;
c.函数的局部环境不仅有权访问函数作用域中的变量,还有权访问其包含(父)环境,乃至全局环境
d.全局环境只能访问全局环境,不能访问局部环境;
e.变量的执行环境,有助于确定应该何时释放内存。
15.创建object实例方式有两种:
a.使用new操作符后跟object构造函数,例:
var a = new Object();
a.name = "xiaoxiao";
a.age = 29;
b.使用对象字面量表示法, 例:
var a = {
name: "xiaoxaio",
age: 29
}
16.创建array的基本方式有两种:
a.使用Array构造函数,例:
var colors = new Array(); || var colors = Array()
var colors = new Array(3); //包含3项的数组
var colors = Array(“blue”); //包含1项,即字符串“blue”的数组
b.使用数组字面量表示法
var colors = ["red", "green"]
17.检测数组的方式:
a. value instanceof Array
b. es5新增:Array.isArray(value)
18.
push 在末尾添加,返回的是length
pop在末尾移除,返回的是移除项
shift()移除数组的第一项,返回的是移除项
unshift()在第一项添加,返回的是length
toString()数组转为字符串,逗号隔开
join()数组转为字符串,不限制用什么隔开
reverse()反转数组的顺序
sort()排序
slice()截取数组,并返回截取大部分
19.splice()方法:始终都会返回一个数组
a.删除:splice(0, 2)从下标0开始,删除2个
b.插入:splice(2,0,"red","yellow")从下标2的位置插入red和yellow
c.替换:splice(2,1, "red", "yellow"),删除数组下标为2的项,然后在2的位置插入red和yellow
20.位置方法:indexOf() 和lastIndexOf()都接受两个参数
21.五种迭代方法:
every(): 检测数组是否都符合条件,是就返回true,不是返回false
map(): 遍历,返回数组
forEach(): 遍历,没有返回值
filter(): 过滤,返回true的数组
some(): 检测数组至少一项符合就返回true,全部不符合返回false
22.两种归并方法
reduce(): 从数组的第一项开始,逐个遍历到最后
reduceRight():从数组的最后一项开始,向前遍历到第一项
都接受4个参数:前一个值,当前值,索引,数组。可以做累加。求和。
23.RegExp
格式: / pattern / flags
g:全局
i: 不区分大小写
m: 多行
元字符:( [ { \ ^ $ | ) ? * + . ] } 必须要转义
函数是对象,函数名是指针。
24. call() 和apply()
作用:改变对象的执行上下文。
异同:
function.call(obj[,arg1[, arg2[, [,.argN]]]]])
a.调用call的对象必须是个函数function
b.call的第一个参数将会是function改变上下文后指向的对象,也就是上面例子里的小刚,也就是上上面例子里的老婆大人,如果不传,将会默认是全局对象window
c.第二个参数开始可以接收任意个参数,这些参数将会作为function的参数传入function
d.调用call的方法会立即执行
function.apply(obj[,argArray])
与call方法的使用基本一致,但是只接收两个参数,其中第二个参数必须是一个数组或者类数组,这也是这两个方法很重要的一个区别
25.引用类型和基本类型的区别是对象的生存期。
26.布尔表达式中所有的值,都会转化位true
27.
toFixed()方法可把 Number 四舍五入为指定小数位数的数字。 0 ~ 20 之间的值,包括 0 和 20
toPrecision() 方法可在对象的值超出指定位数时将其转换为指数计数法。返回 NumberObject 的字符串表示,包含 num 个有效数字。如果 num 足够大,能够包括 NumberObject 整数部分的所有数字,那么返回的字符串将采用定点计数法。否则,采用指数计数法,即小数点前有一位数字,小数点后有 num-1 位数字。必要时,该数字会被舍入或用 0 补足。
toExponential() 方法可把对象的值转换成指数计数法。采用指数计数法,即小数点之前有一位数字,小数点之后有 num 位数字。该数字的小数部分将被舍入,必要时用 0 补足,以便它达到指定的长度。
28. slice(), subStr(), subString()
slice(num1, num2): 为正时,num1下标,num2结束的位置。为负时,num1和num2加上长度
subStr(num1, num2): 为正时,num1下标,num2个数。为负时,num1加上长度,num2转为0
subString(num1, num2): 为正时,num1下标。num2结束的位置。为负时,num1和num2转为0。
29.trim():删除字符串开头和结尾的空格。
30.字符串的大小写
大写:toUpperCase()和toLocaleUpperCase()
小写:toLowerCase()和toLocaleLowerCase()
31.localeCompare()比较两个字符串在前返回1,等于返回0,在后返回-1,例如:
var a = "yellow"
a.localeCompare("blue") //b在y前,返回1
a.localeCompare("yellow") //y=y,返回0
a.localeCompare("zoo") //z在y后,返回-1
32: charAt() , charCodeAt(), fromCharCode()
charAt(num1), num1是下标,返回下标位置的字符串
charCodeAt(num1), num1是下标,返回下标位置字符串的Unicode码
fromCharCode(),接收一个或多个字符编码,返回一个字符串:String.fromCharCode(104,101,108,108,111) //hello
33.uri和url
uri是个资源标记命名的,url是给资源定位的
34.Math()
Math.min()最小
Math.max()最大
Math.ceil()执行向上舍入
Math.floor()执行向下舍入
Math.round()执行标准舍入,四舍五入
Math.random(): 0-1的随机数
值 = Math.floor(Math.random() * 可能值的总数 + 第一个可能值)
var num = Math.floor(Math.random() * 10 + 1)
35,在执行代码之前,已存在两个作用域:global和math