Math 对象

Math是 JavaScript 的原生对象,提供各种数学功能。该对象不是构造函数,不能生成实例,所有的属性和方法都必须在Math对象上调用。

静态属性

Math对象的静态属性,提供以下一些数学常数。

Math.E:常数e。

Math.LN2:2 的自然对数。

Math.LN10:10 的自然对数。

Math.LOG2E:以 2 为底的e的对数。

Math.LOG10E:以 10 为底的e的对数。

Math.PI:常数π。

Math.SQRT1_2:0.5 的平方根。

Math.SQRT2:2 的平方根。

Math.E // 2.718281828459045

Math.LN2 // 0.6931471805599453

Math.LN10 // 2.302585092994046

Math.LOG2E // 1.4426950408889634

Math.LOG10E // 0.4342944819032518

Math.PI // 3.141592653589793

Math.SQRT1_2 // 0.7071067811865476

Math.SQRT2 // 1.4142135623730951

这些属性都是只读的,不能修改。

静态方法

Math对象提供以下一些静态方法。

Math.abs():绝对值

Math.ceil():向上取整

Math.floor():向下取整

Math.max():最大值

Math.min():最小值

Math.pow():返回以第一个参数为底数、第二个参数为幂的指数值

Math.sqrt():返回参数值的平方根。如果参数是一个负值,则返回NaN

Math.log():方法返回以e为底的自然对数值。

Math.exp():方法返回常数e的参数次方。

Math.round():四舍五入

Math.random():返回0到1之间的一个伪随机数,可能等于0,但是一定小于1

三角函数方法

Math对象还提供一系列三角函数方法。

Math.sin():返回参数的正弦(参数为弧度值)

Math.cos():返回参数的余弦(参数为弧度值)

Math.tan():返回参数的正切(参数为弧度值)

Math.asin():返回参数的反正弦(返回值为弧度值)

Math.acos():返回参数的反余弦(返回值为弧度值)

Math.atan():返回参数的反正切(返回值为弧度值)

Date 对象

Date对象是 JavaScript 原生的时间库。它以国际标准时间(UTC)1970年1月1日00:00:00作为时间的零点,可以表示的时间范围是前后各1亿天(单位为毫秒)。

普通函数的用法

Date对象可以作为普通函数直接调用,返回一个代表当前时间的字符串。即使带有参数,Date作为普通函数使用时,返回的还是当前时间。

Date()

// "Tue Dec 01 2015 09:34:43 GMT+0800 (CST)"

构造函数的用法

Date还可以当作构造函数使用。对它使用new命令,会返回一个Date对象的实例。如果不加参数,实例代表的就是当前时间。

var today = new Date();

Date实例有一个独特的地方。其他对象求值的时候,都是默认调用.valueOf()方法,但是Date实例求值的时候,默认调用的是toString()方法。这导致对Date实例求值,返回的是一个字符串,代表该实例对应的时间。作为构造函数时,Date对象可以接受多种格式的参数,返回一个该参数对应的时间实例。

关于Date构造函数的参数,有几点说明。

第一点,参数可以是负整数,代表1970年元旦之前的时间。

第二点,只要是能被Date.parse()方法解析的字符串,都可以当作参数。

第三,参数为年、月、日等多个整数时,年和月是不能省略的,其他参数都可以省略的。也就是说,这时至少需要两个参数,因为如果只使用“年”这一个参数,Date会将其解释为毫秒数。

日期的运算

类型自动转换时,Date实例如果转为数值,则等于对应的毫秒数;如果转为字符串,则等于对应的日期字符串。所以,两个日期实例对象进行减法运算时,返回的是它们间隔的毫秒数;进行加法运算时,返回的是两个字符串连接而成的新字符串。

var d1 = new Date(2000, 2, 1);

var d2 = new Date(2000, 3, 1);

d2 - d1

// 2678400000

d2 + d1

// "Sat Apr 01 2000 00:00:00 GMT+0800 (CST)Wed Mar 01 2000 00:00:00 GMT+0800 (CST)"

静态方法

Date.now方法返回当前时间距离时间零点(1970年1月1日 00:00:00 UTC)的毫秒数,相当于 Unix 时间戳乘以1000。

Date.now() // 1364026285194

Date.parse()

Date.parse方法用来解析日期字符串,返回该时间距离时间零点(1970年1月1日 00:00:00)的毫秒数。

日期字符串应该符合 RFC 2822 和 ISO 8061 这两个标准,即YYYY-MM-DDTHH:mm:ss.sssZ格式,其中最后的Z表示时区。但是,其他格式也可以被解析,请看下面的例子。

Date.parse('Aug 9, 1995')

Date.parse('January 26, 2011 13:51:50')

如果解析失败,返回NaN。

Date.parse('xxx') // NaN

JSON对象

JSON 格式(JavaScript Object Notation 的缩写)是一种用于数据交换的文本格式,2001年由 Douglas Crockford 提出,目的是取代繁琐笨重的 XML 格式。

相比 XML 格式,JSON 格式有两个显著的优点:书写简单,一目了然;符合 JavaScript 原生语法,可以由解释引擎直接处理,不用另外添加解析代码。所以,JSON 迅速被接受,已经成为各大网站交换数据的标准格式,并被写入标准。

每个 JSON 对象就是一个值,可能是一个数组或对象,也可能是一个原始类型的值。总之,只能是一个值,不能是两个或更多的值。

JSON 对值的类型和格式有严格的规定。

  • 复合类型的值只能是数组或对象,不能是函数、正则表达式对象、日期对象。
  • 原始类型的值只有四种:字符串、数值(必须以十进制表示)、布尔值和null(不能使用NaN, Infinity, -Infinity和undefined)。
  • 字符串必须使用双引号表示,不能使用单引号。
  • 对象的键名必须放在双引号里面。
  • 数组或对象最后一个成员的后面,不能加逗号。

以下都是合法的 JSON。

["one", "two", "three"]

{ "one": 1, "two": 2, "three": 3 }

JSON 对象

JSON对象是 JavaScript 的原生对象,用来处理 JSON 格式数据。它有两个静态方法:JSON.stringify()和JSON.parse()。

JSON.stringify()

基本用法

JSON.stringify方法用于将一个值转为 JSON 字符串。该字符串符合 JSON 格式,并且可以被JSON.parse方法还原。

JSON.stringify('abc') // ""abc""

JSON.stringify(1) // "1"

JSON.stringify(false) // "false"

JSON.stringify([]) // "[]"

JSON.stringify({}) // "{}"

JSON.stringify([1, "false", false])

// '[1,"false",false]'

JSON.stringify({ name: "张三" })

// '{"name":"张三"}'

上面代码将各种类型的值,转成 JSON 字符串。

注意,对于原始类型的字符串,转换结果会带双引号。

JSON.stringify('foo') === "foo" // false

JSON.stringify('foo') === "\"foo\"" // true

如果数组的成员是undefined、函数或 XML 对象,则这些值被转成null。

var arr = [undefined, function () {}];

JSON.stringify(arr) // "[null,null]"

正则对象会被转成空对象。

JSON.stringify(/foo/) // "{}"

JSON.stringify方法会忽略对象的不可遍历的属性。

JSON.parse()

JSON.parse方法用于将 JSON 字符串转换成对应的值。

JSON.parse('{}') // {}

JSON.parse('true') // true

JSON.parse('"foo"') // "foo"

var o = JSON.parse('{"name": "张三"}');

o.name // 张三

如果传入的字符串不是有效的 JSON 格式,JSON.parse方法将报错。

JSON.parse("'String'") // illegal single quotes

// SyntaxError: Unexpected token ILLEGAL

上面代码中,双引号字符串中是一个单引号字符串,因为单引号字符串不符合 JSON 格式,所以报错。

为了处理解析错误,可以将JSON.parse方法放在try...catch代码块中。

try {

JSON.parse("'String'");

} catch(e) {

console.log('parsing error');

}

Math, Date,JSON对象的更多相关文章

  1. JavaScript---js语法,数据类型及方法, 数组及方法,JSON对象及方法,日期Date及方法,正则及方法,数据类型转换,运算符, 控制流程(三元运算),函数(匿名函数,自调用函数)

    day46 一丶javascript介绍 JavaScript的基础分为三个       1.ECMAScript:JavaScript的语法标准.包括变量,表达式,运算符,函数,if语句,for语句 ...

  2. JavaScript中Date(日期对象),Math对象--学习笔记

    Date对象 1.什么是Date对象? 日期对象可以储存任意一个日期,并且可以精确到毫秒数(1/1000 秒). 语法:var Udate=new Date();  注:初始值为当前时间(当前电脑系统 ...

  3. 使用 JSON.parse 反序列化 ISO 格式的日期字符串, 将返回Date格式对象

    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/ ...

  4. JS对象 神奇的Math对象,提供对数据的数学计算。注意:Math 对象是一个固有的对象,无需创建它,直接把 Math 作为对象使用就可以调用其所有属性和方法。这是它与Date,String对象的区别

    Math对象 Math对象,提供对数据的数学计算. 使用 Math 的属性和方法,代码如下: <script type="text/javascript"> var m ...

  5. 深入理解JSON对象

    × 目录 [1]语法规则 [2]stringify [3]parse[4]eval 前面的话 json(javascript object notation)全称是javascript对象表示法,它是 ...

  6. jQuery调用WCF服务传递JSON对象

    下面这个示例使用了WCF去创建一个服务端口从而能够被ASP.Net页面通过jQuery的AJAX方法访问,我们将在客户端使用Ajax技术来 与WCF服务进行通信.这里我们仅使用jQuery去连接Web ...

  7. struts2:JSON在struts中的应用(JSP页面中将对象转换为JSON字符串提交、JSP页面中获取后台Response返回的JSON对象)

    JSON主要创建如下两种数据对象: 由JSON格式字符串创建,转换成JavaScript的Object对象: 由JSON格式字符串创建,转换成JavaScript的List或数组链表对象. 更多关于J ...

  8. JavaScript对象、JSON对象、JSON字符串的区别

    一.首先看下什么是JSON JSON:JavaScript Object Natation,JavaScript对象的表现形式,已经发展成一种轻量级的数据交换格式. JavaScript对象的表现形式 ...

  9. [转]json对象详解

    json(javascript object notation)全称是javascript对象表示法,它是一种数据交换的文本格式,而不是一种编程语言,用于读取结构化数据.2001年由Douglas C ...

随机推荐

  1. ArrayList 并发操作 ConcurrentModificationException 异常

    1.故障现象 ArrayList在迭代的时候如果同时对其进行修改就会抛出java.util.ConcurrentModificationException异常 2.故障代码 public class ...

  2. 2018icpc徐州网络赛-H Ryuji doesn't want to study(线段树)

    题意: 有n个数的一个数组a,有两个操作: 1 l r:查询区间[l,r]内$a[l]*(r-l+1)+a[l+1]*(r-l)+a[l+2]*(r-l-1)+\cdots+a[r-1]*2+a[r] ...

  3. LeetCode 23 Hard,K个链表归并

    本文始发于个人公众号:TechFlow,原创不易,求个关注 链接 Merge k Sorted Lists 难度 Hard 描述 Merge k sorted linked lists and ret ...

  4. Go语言实现:【剑指offer】丑数

    该题目来源于牛客网<剑指offer>专题. 把只包含质因子2.3和5的数称作丑数(Ugly Number).例如6.8都是丑数,但14不是,因为它包含质因子7.习惯上我们把1当做是第一个丑 ...

  5. Go语言实现:【剑指offer】对称的二叉树

    该题目来源于牛客网<剑指offer>专题. 请实现一个函数,用来判断一颗二叉树是不是对称的.注意,如果一个二叉树同此二叉树的镜像是同样的,定义其为对称的. Go语言实现: 方法一:递归 / ...

  6. GDAL利用地理坐标读取图像像元值

    最近的一个项目需要在电子海图中下载已知水深点,导出点的地理坐标(经纬度).然后在arcgis中打开这些地理坐标输出为shp,利用GDAL读取不同波段的点对应的像元值,从而构建水深和像元值的对应关系. ...

  7. 使用sass语法生成自己的css的样式库

    前言 先说一下 sass 和 scss的区别 sass 是一种缩进语法(即没有花括号和分号,只使用换行 缩进的方式去区别子元素,PS:这是我个人的理解) scss 是css-like语法  (它的语法 ...

  8. 1213 - Fantasy of a Summation

    1213 - Fantasy of a Summation         If you think codes, eat codes then sometimes you may get stres ...

  9. phpstorm设置debug调试

    先去下载xdebug.dll文件.将下面自己的phpinfo的文字信息复制到https://xdebug.org/wizard.php中,下载它提供的xdebug.dll的版本 下载完成后将php_x ...

  10. 花 1 小时,开源设计 LoRa 继电器开关

    提示1:锐米所有 LoRa 产品严格遵循国标标准的 LoRaWAN 协议. 提示2:您可以免费复制,修改和商用本项目,请注明锐米原创. 提示3:如果您有其他 LoRa 需求或建议,欢迎联系锐米 sup ...