-
JS解析器
JS解析分为两个步骤
- JS预解析
- 找东西
- var
- function
- 参数
- 所有的变量在正式运行代码之前,都提前赋了一个值:未定义
- 所有的函数,在正式运行代码之前,都是整个函数块
- 注意:
- 遇到重名的:只能留下一个
- 变量和函数重名,只留下函数
- 遵循后来居上的准则
- 找东西
- 逐行解读代码
- 表达式: = + - * / % ++ -- ! 参数 ==> 改变值
- 表达式可以改变预解析的值
- JS预解析
-
作用域
- 作用:读、写
- 域:空间、范围、区域
- 注意:
- script 是全局变量 全局函数 单线程 自上而下
- 函数 由里到外
- firefox 不能对下面的函数进行预解析
-
函数调用方式
- 函数调用
- 直接调用
- 事件调用
- setInterval / setTimeout
- clearInterval / clearTimeout
-
定时器
- setInterval(函数,毫秒):重复不断的执行(发动机)
- setTimeout(函数,毫秒):执行一次(炸弹)
-
数据类型
- 数字(NaN)
- 字符串
- 布尔值
- 函数
- 对象(obj [] {} null)
- 未定义
- 注意:
- 数字的比较与字符串的比较:字符串的比较是一个一个字符比较
- isNaN : is not a number 不是个数字
- isNaN():
- 判断某些值是不是数字
- 不喜欢数字
- 内部依靠Number()进行转换
-
数据类型转换
- 显示类型转换
- Number()
- 整体转换
- 空的字符串转换为0
- true=1 false=0
- NaN
- 不要转换函数
- 空数组为0
- json为NaN
- null = 0
- 未定义 = NaN
- parseInt(b,10)
- 10表示转换为10进制数字
- 一个一个字符进行转换
- 认 + - 号
- parseFloat()
- Number()
- 隐式类型转换
- + 变成字符串
- - * / % 变成数字
- ++ -- 变成数字
- > < 数字的比较/字符串的比较
- ! 取反 把右边的数据类型转换为布尔值
- 注意
- == 比较值的大小
- === 比较数据类型
- 一旦所有的转换不成功,都会显示NaN
- 一旦程序中出现了NaN,肯定进行了非法的运算
- NaN 是false
- NaN 跟自己都不相等
- NaN 不是数字的数字类型
- 显示类型转换
-
真假问题
- 真
- 非0的数字
- 非空字符串
- true
- 函数
- 能找到的元素
- []
- {}
- 假
- 0
- NaN
- 空字符串
- false
- 不能找到的元素
- null
- 未定义
- 真
-
return返回值
- 函数名+括号:fn1() ==> return 后面的值
- 所有的函数默认返回值
- return 后面的代码都不操作了
-
参数
- 实参 == 实际传递的参数
- 形参 == 形式上
- arguments
- 实参的集合
- 当函数的参数个数无法确定,就用arguments
-
getComputedStyle
- 获取到的是计算机(浏览器)计算后的样式 // IE6 IE7 IE8不兼容
- FF4.0之前 旧的火狐下getComputedStyle(obj,true);
-
currentStyle
- 标准的浏览器不兼容
- 注意:
- background:url() 复合样式 不要获取
- background:#ccc 单一样式 不要比较
- 不要有空格
时间: 2024-10-27 16:45:56