数组的真正写法:
new Array();
函数的真正写法:
new Function(); //不推荐
Math的常用方法(本地对象)
Math.random() 获取0-1之间的随机小数不包括1
Math.ceil() 向上取整
Math.floor() 向下取整
Math.round() 四舍五入
Math.abs() 绝对值
Math.sqrt() 开方
Math.pow() n次方(幂)
Math.max() 求最大值
Math.min() 求最小值
getByClass
批量修改样式:
1.with(obj.style){
样式名=样式值;
样式名=样式值;
}
不用:缺陷;
主要是性能问题
2.obj.style.cssText='width:200px;height:200px;';
obj.style.cssText 简单
但是不用:有缺陷。
会覆盖 先把行间样式清空再加
getStyle 批量获取样式
function getStyle() {
if (arguments.length==3){
arguments[0].style[arguments[1]]=arguments[2];
}else{
for(var name in arguments[1]){
arguments[0].style[name]=arguments[1][name];
}
}
}
eval:把字符串变成可执行的语句.
eval('('+json+')')
在解析json字符串的时候,要两边加()括号
后台过来的json 都是字符串
****另一种方法:var fn=new Function('return'+json);
fn()
预解析:
会预先解析一些(变量定义、函数会预解析);
var a=12;
只把var a提到作用域的顶部
js会把变量的声明(仅仅是声明)提到顶部。不会突破作用域
`执行步骤:`
读取一个script标签>预解析>执行里面的代码>
读取下一个script标签>预解析>执行里面的代码
不会突破script标签
undefined和not defined
undefined存在没有赋值
not defined 没定义 直接用
预解析作用范围:
会找本作用域之内(函数、script)
函数也有预解析,但是要注意:
当以变量的形式声明的函数,预解析会按照变量的特性走
引用:
对象才有引用 基本类型没有
什么叫有引用 ?他们指的是同一个东西;
引用: 共同是一个东西:object
只有在对象身上才会发生
为什么会它有引用 因为对象比较大 不能每次都用新东西 性能浪费
异常:
try...catch
报错的时候,后面的程序不执行。
bug异常 程序员不可控制的错误
try...catch
try 尝试着去执行一段代码。
如果没有做错。就正常执行。
如果有错,找catch
try{
可能会出错的代码
}catch(e){
补救代码
}
e 包含着错误信息
严格模式
'use strict'
严格模式的好处:
1.解决了局部函数中this是window的bug.
2.解决了不加var声明变量的bug.
3.避免在if,switch,for,while,for in里面定义函数
(不允许在非函数的代码块内声明函数)
4.去掉了with
严格模式是好东西
每个js文件都加上严格模式 推荐
严格模式有作用域 1.函数 2.script
严格模式兼容?
高级浏览器兼容 ie9-不兼容
严格模式注意:
使用严格模式'use strict'前面不能有代码。