单体内置对象
内置对象的定义是:不依赖宿主环境的对象,这些对象在ECMScript程序执行之前就已经存在了。开发人员不必实例化,因为他们已经存在了。前面我们已经介绍了大多数内置对象,例如:Object
、Array
、String
。
ECMScript定义了2个单体内置对象
- Global
- Math
一、Global
所有的全局作用域中定义的属性和函数,都是Global对象的属性
isNaN()
isFinite()
parseInt()
parseFloat()
encodeURI()
encodeURIComponent()
decodeURI()
decodeURIComponent()
escape()
unescape()
eval()
这里着重介绍eval()
eval()
是一个完整的ECMScript解析器,它只接受一个参数,即要执行的ECMScript或JavaScript字符串
eval("alert('hellow word')");
//上面这行代码的作用等价于下面这行代码:
alert('hellow word');
当解析器发现代码中调用eval()
方法时,它会将传入的参数当做实际的ECMScript语句来解析,然后把执行的结果插入到原来的位置。通过eval()
执行的代码被认为是包含该次调用的执行环境的一部分,因此被执行的代码具有与该执行环境相同的作用域,这意味着通过eval()
执行的代码可以引用在包含环境中定义的变量,举个例子:
var msg='hellow world';
eval("alert(msg)");
在eval()
中创建的任何变量或函数都不会被提升,因为再解析代码的时候,它们被包含在一个字符串中,它们只在eval()
执行的时候创建
eval()
解析字符串的功能非常强大,但同时也非常危险
二、Math对象
1、常用的方法
方法 | 属性 |
---|---|
Math.min() | 求最小数 |
Math.max() | 求最大数 |
Math.ceil() | 向上取整 |
Math.floor() | 向下取整 |
Math.round() | 四舍五入 |
Math.randow() | 返回一个大于等于0小于1的随机数 |
利用Math.randow()
可随机生成某个整数范围内的数值,公式:
值=Math.floor(Math.random()*可能的得总数+第一个可能的值)
取值范围【start,end】,可能值得总数=end-star 第一个可能的值=start
例、随机生成22-69之间的数字
//可能值得总数=69-22,第一个可能的值22
console.log(Math.floor(Math.random()*47+22));
2、其他方法
方法 | 说明 |
---|---|
Math.abc(num) | 返回num的绝对值 |
Math.exp(num) | 返回Math.E的num次幂 |
Math.log(num) | 返回num的自然对数 |
Math.pow(num,power) | 返回num的power次幂 |
Math.sqrt(num) | 返回num的平方根 |
Math.acos(x) | 返回x的反余弦值 |
Math.asin(x) | 返回x的反正弦值 |
Math.atan(x) | 返回x的反正切值 |
Math.atan2(y,x) | 返回y/x的反正切值 |
Math.cos(x) | 返回x的余弦值 |
Math.sin(x) | 返回x的正弦值 |
Math.tan(x) | 返回x的正切值 |
小结
在所有的代码执行之前,作用域中就已经存在两个内置对象:Global和Math。在大多数ECMAScript视线中都不能直接访问Global对象;不过,web浏览器实现了承担该角色的window对象。全局变量和函数都是Global对象的属性。Math对象提供了很多属性和方法,用于辅助完成复杂的数学计算任务