返回顶部
首页 > 资讯 > 前端开发 > JavaScript >JavaScript 中的单例内置对象Global 与 Math
  • 213
分享到

JavaScript 中的单例内置对象Global 与 Math

2024-04-02 19:04:59 213人浏览 八月长安
摘要

目录前言Global1.URL编码方法2.eval()方法3.Gobal对象属性4.window 对象Math1.Math 对象属性2.min()和max()方法3.舍入方法 Mat

前言

ECMA-262 对内置对象的定义是“任何由ECMAScript实现提供,与宿主环境无关,并在ECMAScript 程序开始执行时就存在的对象”。这意味着,开发者不用显示的实例化内置对象,因为他们已经实例化 好了。

Global

Global 对象是ECMAScript 中最特别的对象,因为代码不会显示的访问它。ECMA-262 规定Global 对象为一种兜底对象,他所针对的是不属于任何对象的属性和方法。事实上,不存在全局变量或全局函数这种东西。在全局作用域中定义的变量和函数都会变成Global对象的属性。包括isNaN(),isFinite(),parseInt()和parseFloat(),实际上都是Global对象的方法。除了这些,Global 对象上还有另外一些方法。

1.URL编码方法

encodeURI()和encodeURIComponent()方法用于编码统一资源标识符(URI),以便传给浏览器有效的URI不能包含某些字符比如空格。使用URI编码方法来编码URI可以让浏览器能够理解它们,同时又以特殊的UTF—8 编码替换掉所有无效字符。encodeURI()方法用于对整个URI进行编码,比如"www.wrox.com/illegal value.js".而encodeURIComponent()方法用于编码URI中单独的组件,比如前面URL 中的"illegal value.js"。这两个方法的主要区别是,encodeURI 不会编码属于URL组件的 特殊字符,如冒号,斜杠,问号,井号,二encodeURI Component()会编码他发现的所有非标准字符。

let uri = "Http://www.wrox.com/illegal value.js#start";

//http://www.wrox.com/illegal%20value.js#start
console.log(encodeURI(uri));

//http%3A%2F%2Fwww.wrox.com%2Fillegal%20value.js%23start
console.log(encodeURIComponent(uri));

这里使用encodeURI()编码后,除空格被替换为%20之外,没有任何变化。而encodeURIComponent()方法将所有非字母字符都替换成了相应的编码形式。这就是使用encodeURI编码整个URI,但只使用encodeURIComponent()编码那些会追加到已有URI后面的字符串的原因。
与encodeURI() 和 encodeURIComponent()相对的是decodeURI()和decodeURIComponent().decodeURI()只对使用encodeURI()编码过的字符解码。例如,%20会被退换为空格,但%23不会被替换为井号(#),因为井号不是由encodeURI()替换的。类似的,decodeURIComponent()解码所有被encodeURIComponent()编码的字符,基本上就是解码所有特殊值。

let uri = "http%3A%2F%2Fwww.wrox.com%2Fillegal%20value.js%23start";

//http%3A%2F%2Fwww.wrox.com%2Fillegal%20value.js%23start
console.log(decodeURI(uri));

//http://www.wrox.com/illegal value.js#start
console.log(encodeURIComponent(uri));

2.eval()方法

eval()方法可以说是ECMAScript语言中最强大的。这个方法就是一个完整的ECMAScript解析器,它接收一个参数,即一个要执行的ECNAScript(javascript)字符串。
当解释器发现eval()调用时,会将参数解释为实际的ECMAScript 语句,然后将其插入该位置
通过eval()执行的代码属于该调用所在上下文,被执行的代码与该上下文拥有相同的作用域链
通过eval()定义的任何变量和函数都不会被提升,这是因为在解析代码的时候,它们是被包含在一个字符串中。 由于eval()的风险性,大部分时间不会使用这个函数。

3.Gobal对象属性

Gobal 对象由很多属性,其中一些前面已经提到过了。像undefined,NaN和Infinity等特殊值都是Global 对象的属性。此外,所有原生引用类型构造函数,比如Object和Function,也都是Gobal 对象的属性。下表列出了Global对象的属性。

属性说明
undefined特殊值undefined
NaN特殊值NaN
Infinity特殊值Infinity
ObjectObject的构造函数
ArrayArray的构造函数
FunctionFunction的构造函数
BooleanBoolean的构造函数
StringString 的构造函数
NumberNumber 的构造函数
DateDate的构造函数
RegExpRegExp的构造函数
SymbolSymbol的伪构造函数
ErrorError 的构造函数
EvalErrorEvalError 的构造函数
RangeErrorRangeError的构造函数
SyntaxErrorSyntaxError的构造函数
TypeErrorTypeError的构造函数
URIErrorURIError的构造函数

4.window 对象

虽然ECMA-262 没有规定 直接访问Global 对象的方式,但浏览器将window对象实现为Global对象的代理。因此全局作用域中的变量和函数都变成了window对象的属性。

var color = "red";

function sayColor() {
    cosole.log(window.color);
}

window.sayColor();// “red”

另外一种获取Global 对象的方式是使用如下的代码:

let global = function () {
    return this;
}();

这段代码创建一个立即调用的函数表达式,返回了this的值。当一个函数没有明确(通过称为某个对象的方法,或者通过call()/apply())指定this值的情况下执行时,this值等于Global 对象。

Math

ECMAScript 提供了Math 对象作为保存数学公式,信息和计算的地方。Math对象提供了一些辅助计算的属性和方法。
Math对象上提供的计算要比直接在JavaScript 实现的快的多,因为Math 对象上的计算使用了JavaScript 引擎中更高效的实现和处理器指令。但使用Math计算的问题时精确度会因浏览器,操作系统,指令集和硬件而异。

1.Math 对象属性

属性说明
Math.E自然对数的基数e的值
Math.LN1010为底的自然数对
Math.LN22为底的自然对数
Math.LOG2E以2为底e的对数
Math.LOG10E以10为底e的对数
Math.PIpi的值
Math.SQRT1_21/2的平方根
Math.SQRT22的平方根

2.min()和max()方法

Math对象也提供了很多付诸执行简单或复杂数据计算的方法。 min()和max()方法用于确定一组数值中的最小值和最大值。这两个方法接收任意多个参数。

let max = Math.max(3,54,32,16);
console.log(max); // 54

let min = Math.min(3,54,32,16);
console.log(min);//3

要知道数组中的最大值和最小值,可以像下面这样使用拓展操作符:

let values = [1,2,3,4,5,5,6,7,8];
let max = Math.max(...values);// 8

3.舍入方法 Math.ceil(),Math.floor(),Math.round(),Math.fround()

Math.ceil(),Math.floor(),Math.round(),Math.fround() 是把小数舍入为整数的4个方法。

Math.ceil()方法始终向上舍入为最接近的整数。

Math.floor() 方法始终向下舍入为最接近的整数。

Math.round() 方法执行四舍五入。

Math.fround()方法返回数值最接近的单精度(32位)浮点值表示。

console.log(Math.ceil(25.9));// 26
console.log(Math.ceil(25.5));// 26
console.log(Math.ceil(25.1));// 26

console.log(Math.round(25.9));// 26
console.log(Math.round(25.5));// 26
console.log(Math.round(25.1));// 25

console.log(Math.fround(0.4));//0.4000000059604645
console.log(Math.fround(0.5));// 0.5
console.log(Math.fround(25.9));// 25.899999618530273

console.log(Math.floor(25.9));// 25
console.log(Math.floor(25.5));// 25
console.log(Math.floor(25.1));// 25

random()方法

Math.random()方法返回一个0~1范围内的随机数,其中包含0 但不包含1。可以基于一下公式使用Math.random()从一组整数种随机选择一个数:

number = Math.floor(Math.random() * totoal_number_of_choices + first_possible_value)

这里使用了Math.floor()方法,因为Math.random()始终返回小数,即便成一个数再加上一个数也是小数。因此,如果想从1~10范围内随机选择一个数,代码就是这样的

let num = Math.floor(Math.random() * 10 + 1);

可以通过下面的通用函数计算出可选总数和最小可能的值:

function selectFrom(lowerValue,upperValue){
    let choices = upperValue - lowerValue + 1;
    return Math.floor(Math.random() * choices + lowerValue);
}
let num = selectFrom(2,10);
console.log(2,10);

Math的其他方法

方法说明
Math.abs(x)返回x的绝对值
Math.exp(x)返回Math.E的x次幂
Math.expm1(x)等于Math.exp(x) -1
Math.log(x)返回x的自然对数
Math.log1p等于1 + Math.log(x)
Math.pow(x,power)返回x的power次幂
Math.hypot(..nums)返回nums中每个数平方和的平方根
Math.clz32(x)返回32位整数x的前置零的数量
Math.sign(x)返回x符号的1,0,-0或 -1
Math.trunc(x)返回x的整数部分,删除所有小数
Math.sqrt(x)返回x的平方根
Math.cbrt(x)返回x的立方根
Math.acos(x)返回x的反余弦
Math.acosh(x)返回x的反双曲余弦
Math.asin(x)返回x的反正弦
Math.asinh(x)返回x的反双曲正弦
Math.atan(x)返回x的反正切
Math.atanh(x)返回x的反双曲正切
Math.atan2(y,x)返回y/x的反正切
Math.cos(x)返回x的余弦
Math.sin(x)返回x的正弦
Math.tan(x)返回x的正切

到此这篇关于JavaScript 中的单例内置对象Global 与 Math的文章就介绍到这了,更多相关JavaScript 单例内置对象内容请搜索编程网以前的文章或继续浏览下面的相关文章希望大家以后多多支持编程网!

--结束END--

本文标题: JavaScript 中的单例内置对象Global 与 Math

本文链接: https://lsjlt.com/news/164800.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

猜你喜欢
  • JavaScript 中的单例内置对象Global 与 Math
    目录前言Global1.URL编码方法2.eval()方法3.Gobal对象属性4.window 对象Math1.Math 对象属性2.min()和max()方法3.舍入方法 Mat...
    99+
    2024-04-02
  • javascript内置对象Math案例总结分析
    目录Math概述Math中常用函数的用法1.绝对值方法2.三个取整方法3.求最大值/最小值4.随机数案例求两个数之间的随机整数的小算法(重要)随机点名结语Math概述 Math 对象...
    99+
    2024-04-02
  • JavaScript内置对象Math与String详细介绍
    目录Math对象Math获取随机数String对象Math对象 js内置数学对象 不是一个构造函数 所以不需要使用new来调用 而是直接使用里面的属性和方法即可 Math.PI 圆周...
    99+
    2024-04-02
  • javascript中内置对象Math的介绍及用法案例
    目录前言Math概述Math中常用函数的用法1.绝对值方法2.三个取整方法3.求最大值/最小值4.随机数结语前言 今天总结一下javascript 内置对象Math中的函数用法,顺带...
    99+
    2024-04-02
  • javascript中内置对象Math怎么使用
    本文小编为大家详细介绍“javascript中内置对象Math怎么使用”,内容详细,步骤清晰,细节处理妥当,希望这篇“javascript中内置对象Math怎么使用”文章能帮助大家解决疑惑,下面跟着小编的思路慢慢深入,一起来学习新知识吧。M...
    99+
    2023-06-29
  • JavaScript内置对象Math方法怎么用
    这篇文章主要介绍“JavaScript内置对象Math方法怎么用”,在日常操作中,相信很多人在JavaScript内置对象Math方法怎么用问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望...
    99+
    2024-04-02
  • javascript Number 与 Math对象的介绍
    目录一、javascript 中 Number二、Javascript中Math对象一、javascript 中 Number javascript 中,数值类型属于原始类型。 除了...
    99+
    2024-04-02
  • JavaScript的内置对象Math和字符串详解
    目录Math对象常用属性常用方法Math.random()字符串方法length属性charAt()charCodeAt()fromCharCode()concat()in...
    99+
    2024-04-02
  • 详解JavaScript中Math内置对象基本方法的使用
    目录概念math原生属性math常用方法math在日常开发中的数字处理方法使用Math.random()生成随机数小结Mathjs插件源码地址概念 Math 是javaScript的...
    99+
    2024-04-02
  • JavaScript中的内置对象实例分析
    这篇文章主要介绍“JavaScript中的内置对象实例分析”,在日常操作中,相信很多人在JavaScript中的内置对象实例分析问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”JavaScript中的内置对象实...
    99+
    2023-06-29
  • javascript中Reflect内置对象的示例分析
    小编给大家分享一下javascript中Reflect内置对象的示例分析,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!语义Ref...
    99+
    2024-04-02
  • ES6中Math对象的示例分析
    这篇文章主要为大家展示了“ES6中Math对象的示例分析”,内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下“ES6中Math对象的示例分析”这篇文章吧。1、Math....
    99+
    2024-04-02
  • JavaScript中Math对象和调试程序的示例分析
    这篇文章主要为大家展示了“JavaScript中Math对象和调试程序的示例分析”,内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下“JavaScript中Math对象...
    99+
    2024-04-02
  • JavaScript中如何理解单体内置对象
    这篇文章将为大家详细讲解有关JavaScript中如何理解单体内置对象,文章内容质量较高,因此小编分享给大家做个参考,希望大家阅读完这篇文章后对相关知识有一定的了解。ECMA-262 对内置对象的定义是「由...
    99+
    2024-04-02
  • JavaScript中的内置对象介绍
    一、对象的概念 对象是一种特殊的数据类型(object)。拥有一系列的属性和方法。分为内置对象和自定义对象。 二、String对象 String对象用来支持对于字符串的处理。 1、属...
    99+
    2024-04-02
  • JavaScript内置对象BigInt实例分析
    本文小编为大家详细介绍“JavaScript内置对象BigInt实例分析”,内容详细,步骤清晰,细节处理妥当,希望这篇“JavaScript内置对象BigInt实例分析”文章能帮助大家解决疑惑,下面跟着小编的思路慢慢深入,一起来学习新知识吧...
    99+
    2023-07-02
  • JavaScript对象和内置对象的区别
    这篇文章主要讲解了“JavaScript对象和内置对象的区别”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“JavaScript对象和内置对象的区别”吧!一、...
    99+
    2024-04-02
  • javascript中有没有内置对象
    这篇文章主要介绍了javascript中有没有内置对象,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。 javas...
    99+
    2024-04-02
  • javascript内置对象Date案例总结分析
    目录Date的基本使用格式化时间1.格式化日期-年,月,日2.格式化时,分,秒获取Date总的毫秒数(时间戳)案例-网页倒计时核心算法(重要)结语Date的基本使用 内置对象Date...
    99+
    2024-04-02
  • JavaScript的内置对象怎么用
    这篇“JavaScript的内置对象怎么用”文章的知识点大部分人都不太理解,所以小编给大家总结了以下内容,内容详细,步骤清晰,具有一定的借鉴价值,希望大家阅读完这篇文章能有所收获,下面我们一起来看看这篇“J...
    99+
    2024-04-02
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作