1、匿名自执行函数:
首先匿名自执行函数属于闭包,闭包的主要作用就是使函数拥有私有变量成为可能。那么匿名自执行函数作为一个容器,内部可以访问外部变量,而外部不能访问外内部变量。
其次,匿名说明本函数声明无特殊意义,只是为了划分闭包。
最后,自执行相当于声明多个函数,但不调用,当因为某些动态事件(比如鼠标点击)触发该函数时才执行,因为是由实时时间触发执行,所以被称为自执行。
2、getElementById调用的元素,直接用变量名。getElementsByClassName和getElementsByTagName调用的元素,用变量名.[0]。
3、setTimeout和setInterval的区别:
setTimeout表示在指定时间后调用事件,只执行一次;
setInterval表示在制定时间间隔后调用事件,只要不使用clearInterval就会不停的调用事件。
将setInterval赋给某一对象是为了及时清除。
4、setInterval最小时间单位1ms。
5、js脚本文件放在body底部,可以改善显示速度。
6、再次(重复)声明某个变量,将不会改变他的值,而非报错。
7、定义变量时无数据类型区分,字符串和数字混合相加时,无论谁前谁后都变成字符串。
8、数组的类型是对象,用方括号表示(不同于c的大括号)。
9、null和空("")也是对象,undefined用于清空值,他的类型也是undefined。
10、函数参数不需要定义数据类型(因为只有一种var即可表示所有,var默认不写)。
11、函数调用时不加括号返回函数定义。
12、==代表值相等,===代表值和类型都相等,对象无法进行比较。
13、indexOf特点是使用第二个起始位置参数,search特点是使用更强大的正则表达式,两者功能都是搜索子串。
14、slice可以用负位置,substring不可以用负位置,substr第二个参数为长度,第一个参数可以为负。
15、replace函数返回新字符串,不改变原有字符串,concat、slice也具有同样的特性。
16、trim函数作用:删除两边空白符。
17、访问字符串var str时不能用str[0]访问,只能用str.charAt(0)访问。
18、浮点数运算不一定准,可以先让浮点数变为整数运算再变回浮点数。
19、四则运算符号只有加号对数字和字符串有歧义,剩下的符号面对字符串也会当成数字运算。
20、NaN 的数据类型是数值;
数组的数据类型是对象;
日期的数据类型是对象;
null 的数据类型是对象;
未定义变量的数据类型是 undefined;
尚未赋值的变量的数据类型也是 undefined;
function的数据类型是函数,但本质上是对象。
21、toString()函数括号内有数字功能为进制转换,括号内无数字时功能为转换为字符串,默认用逗号隔开,若想改变隔开方式,用join。
22、toExponential() 为转换为指数计数法,中间参数为小数点后的字符数。
23、JS数组中数组元素可以为各种类型,甚至函数和数组;添加新元素用push();数组下标只能为数字;数组类型为对象。
24、pop删除数组最后一个元素,shift删除数组第一个元素,splice指定位置进行插入删除元素。
25、闭包指的是有权访问父作用域的函数,即使在父函数关闭之后。
26、对于匿名函数,存放在变量中的函数不需要函数名。他们总是使用变量名调用。
27、在 JavaScript 中,可以在使用变量之后对其进行声明,但初始化不会被提升;函数声明也可以提升;用 let 或 const 声明的变量和常量不会被提升。
28、自调用函数就是在一个函数外面套了一层括号表示这是个表达式,然后后面再加一对括号表示自调用。
29、为创建新对象而设计的函数,被称为对象构造函数(对象构造器)。
30、this属于关键词,指的是拥有当前代码的对象。
31、call() 方法分别接受参数,apply() 方法接受数组形式的参数。
32、严格模式:无法使用未声明的变量。