1. JS的组成:
a) ECMAScript 是什么:担当的是一个翻译的角色;是一个解释器;帮助计算机来读懂我们写的程序;实现+-*/, 定义变量;几乎没有兼容性问题;
b) DOM: 文档对象模型;文档指的就是网页;把网页变成一个JS可以操作的对象;给了JS可以操作页面元素的能力;document;有一些兼容性问题;
c) BOM:浏览器对象模型;给了JS操作浏览器的能力;window;几乎不兼容;
2. 变量类型:
a) 检测变量类型: typeof
b) 类型:number, string, boolean, object, function, undefined,
c) 变量是一个杯子,它的类型是由它里面存放的东西决定的;
d) Undefined类型出现:1是真的没有定义, 2是虽然定义了,但没有赋值;
e) Object是什么:对象是一个复合类型,它是由一组基本类型组成的;如:div,它是一个对象,它有id,width等特性,它的id是string的,width是number的;
f) 基本类型与引用类型:
3. 变量类型转换:
a) parseInt(); 从字符串中提取数字;
b) NaN; not a number;
c) NaN 和任何数计算 都是NaN;
d) NaN 不与任何值相等,包括它自身;要比较需要使用方法isNaN();
e) 显性类型转换:
i. parseInt()/ parseFloat();
ii. NaN 的意义和检测:
1. 意义:not a number;
2. 检测:isNaN();
f) 隐式类型转换:
i. "==" ,就是隐式转换,它会先把两边的东西转成一样的类型,然后再进行比较;
ii. 减法、乘法、除法 也会进行自发的隐式转换;只有加号不可以;
4. 变量作用域与闭包:
a) 作用域:就是变量能够起作用的范围;
b) 局部变量:定义在一个函数里,只能在这个函数里用;
c) 全局变量: 不定义在任何一个函数里,可以在任何地方去用;
d) 闭包:是另一种作用域;子函数可以使用父函数的局部变量;
5. 命名规范:
a) 匈牙利命名法:
i. 有类型前缀;
ii. 首字母大写;
6. 运算符:
a) 算术: 加减乘除、取模(求余数%);
b) 赋值:= , +=,
c) 关系: <</span>, >, <=, >=, ==, ===,!=, !==
d) 逻辑: && 与, ||或,!取反;
e) 运算符优先级:();
7. 程序流程控制:
a) 判读: if ,switch,? :
b) 循环: while, for
c) 跳出: break(终止整个循环), continue(终止本次循环,继续下次循环;只跳过当次;)
d) 什么是真,什么是假:
i. 真: true, 非0数字,非空字符串包括空格,非空对象
ii. 假: false, 数字0,空字符串,空对象null, undefined,
8. Json:
a) 专门为JS诞生的一种数据格式;(JavaScript Object Notation)
b) JS 对象标记语言;
c) JS 和数组的关系;
d) JS的遍历: for... in
9. 函数返回值:
a) 就是函数的执行结果;
b) 可以没有return, 它会返回一个undefined;
10.函数传参:
a) arguments : 可变参, 存放所有的参数
b) 封装CSS函数:利用argument长度判断,同时支持获取与设置;
c) 如何获取非行间的样式:
i. currentStyle : 获取计算后的样式 (IE下)
ii. getComputedStyle : (FF下)
iii. 可以获取默认样式;
iv. 对于复合样式:如background无法获取;
11.数组:
a) 数组的length属性可以赋值;可以用length=0清空数组;
b) 添加与删除元素:
i. push() 和 pop() – 尾部添、删
ii. unshift() 和 shift() – 头部添、删
c) 排序:
i. sort():让sort排序数字,使用比较函数;
d) 转换类:
i. concat() : 连接两个数组,生成一个新数组;
ii. join(分隔符): 用分隔符组合数组元素,生成一个字符串;
iii. split(分隔符): 和join相反,把字符串切成数组;
e) 万能方法splice():
i. 参数:splice(开始位置,长度,新元素,新元素...);
ii. 作用:先从开始位置删除一定长度的元素,再在指定位置开始插入一些元素;
iii. 可以用于从中间插入、中间删除、以及任意位置替换;