预编译
预编译分为全局预编译和局部预编译,全局预编译发生在页面加载完成时执行,而局部预编译发生在函数执行的前一刻。
tip:预编译阶段发生变量声明和函数声明,没有初始化行为(赋值),匿名函数不参与预编译 。只有在解释执行阶段才会进行变量初始化 。
全局预编译步骤:
1.创建GO对象(Global Object)全局对象。
2.找变量内容,将变量名作为GO属性,值为undefined
3.查找函数声明,作为GO属性,值赋予函数体。
伪代码
GO(Global Object) 全局对象 全局指window
window/GO{
a:undefined,
}
局部预编译
1.创建AO对象(Activation Object)执行期上下文。
2.找形参和变量声明,将变量和形参名作为AO属性名,值为undefined。
3.将实参值和形参统一。
4.在函数体里面找函数声明,值赋予函数体。
tip:GO对象是全局预编译,所以它优先于AO对象所创建和执行
Javascript中的数学对象
console.log(Math.PI); 在控制台输出圆周率
console.log(Math.ceil(4.789)); //向上取整
console.log(Math.ceil(-2.34)); //向上取整 取到值 》= 参数
console.log(Math.floor(4.789)); //向下取整
console.log(Math.floor(-4.790));
console.log(parseInt(-4.789));
console.log(Math.round(4.789)); //四舍五入取整
console.log(Math.max(10,7,3)); //返回一组数中较大值
console.log(Math.min(10,7,2)); //返回一组数中较小值
console.log(Math.abs(-1)); //返回数的绝对值
console.log(Math.pow(2,3)); //x的y次幂
console.log(Math.random()); //返回介于0~1之间的随机数
console.log(Math.random()*10); //范围[0,10]
console.log(Math.round(Math.random()*10)); //可能取到0或者10