首页 > 编程语言 >JavaScript进阶13笔记

JavaScript进阶13笔记

时间:2023-06-26 16:37:44浏览次数:51  
标签:13 进阶 对象 JavaScript Number Date 日期 var 数字

数字和日期

数字

在 JavaScript 里面,数字均为双精度浮点类型,即一个介于 ±2^−1023 和 ±2^+1024 之间的数字,或约为 ±10^−308 到 ±10^+308,数字精度为 53 位。整数数值仅在 ±(2^53 - 1) 的范围内可以表示准确。

即一个介于 ±2^−1023 和 ±2^+1024 之间的数字,或约为 ±10^−308 到 ±10^+308,数字精度为 53 位。整数数值仅在 ±(2^53 - 1) 的范围内可以表示准确。

除了能够表示浮点数,数字类型也还能表示三种符号值:+Infinity(正无穷)、-Infinity(负无穷)和 NaN (not-a-number,非数字)。

JavaScript 最近添加了 BigInt 的支持,能够用于表示极大的数字。使用 BigInt 的时候有一些注意事项,例如,你不能让 BigIntNumber 直接进行运算,你也不能用 Math 对象去操作 BigInt 数字。

您可以使用四种数字进制:十进制,二进制,八进制和十六进制。

十进制数字

1234567890
42
// 以零开头的数字的注意事项:
0888 // 888 将被当做十进制处理
0777 // 在非严格格式下会被当做八进制处理 (用十进制表示就是 511)

请注意,十进制可以以 0 开头,后面接其他十进制数字,但是假如下一个接的十进制数字小于 8,那么该数字将会被当做八进制处理。(八进制和十进制都可以用0开头)

 

二进制数字

二进制数字语法是以零为开头,后面接一个小写或大写的拉丁文字母 B(0b 或者是 0B)。假如 0b 后面的数字不是 0 或者 1,那么就会提示这样的语法错误( SyntaxError):"Missing binary digits after 0b(0b 之后缺失二有效的二进制数据)"。

var FLT_SIGNBIT  = 0b10000000000000000000000000000000; // 2147483648
var FLT_EXPONENT = 0b01111111100000000000000000000000; // 2139095040
var FLT_MANTISSA = 0B00000000011111111111111111111111; // 8388607

 

八进制数字

八进制数字语法是以 0 为开头的。假如 0 后面的数字不在 0 到 7 的范围内,该数字将会被转换成十进制数字。

var n = 0755; // 493
var m = 0644; // 420

Copy to Clipboard

在 ECMAScript 5 严格模式下禁止使用八进制语法。八进制语法并不是 ECMAScript 5 规范的一部分,但是通过在八进制数字添加一个前缀 0 就可以被所有的浏览器支持:0644 === 420 而且 "\045" === "%"。在 ECMAScript 6 中使用八进制数字是需要给一个数字添加前缀"0o"。

var a = 0o10; // ES6 :八进制

 

十六进制

十六进制数字语法是以零为开头,后面接一个小写或大写的拉丁文字母 X(0x 或者是 0X)。假如0x后面的数字超出规定范围 (0123456789ABCDEF),那么就会提示这样的语法错误 (SyntaxError):"Identifier starts immediately after numeric literal".

0xFFFFFFFFFFFFFFFFF // 295147905179352830000
0x123456789ABCDEF   // 81985529216486900
0XA                 // 10

 

指数形式

1E3   // 1000
2e6   // 2000000
0.1e2 // 10

有e/E

数字对象

内置的Number对象有一些有关数字的常量属性,如最大值、不是一个数字和无穷大的。你不能改变这些属性,但可以按下边的方式使用它们:

var biggestNum = Number.MAX_VALUE;
var smallestNum = Number.MIN_VALUE;
var infiniteNum = Number.POSITIVE_INFINITY;
var negInfiniteNum = Number.NEGATIVE_INFINITY;
var notANum = Number.NaN;

你永远只用从 Number 对象引用上边显示的属性,而不是你自己创建的 Number 对象的属性。

下面的表格汇总了数字对象的属性:

数字的属性

属性描述
Number.MAX_VALUE 可表示的最大值
Number.MIN_VALUE 可表示的最小值
Number.NaN 特指”非数字“
Number.NEGATIVE_INFINITY 特指“负无穷”;在溢出时返回
Number.POSITIVE_INFINITY 特指“正无穷”;在溢出时返回
Number.EPSILON 表示 1 和比最接近 1 且大于 1 的最小Number之间的差别
Number.MIN_SAFE_INTEGER JavaScript 最小安全整数。
Number.MAX_SAFE_INTEGER JavaScript 最大安全整数。
方法描述
Number.parseFloat() 把字符串参数解析成浮点数,和全局方法 parseFloat() 作用一致。
Number.parseInt() 把字符串解析成特定基数对应的整型数字,和全局方法 parseInt() 作用一致。
Number.isFinite() 判断传递的值是否为有限数字。
Number.isInteger() 判断传递的值是否为整数。
Number.isNaN() 判断传递的值是否为 NaN. More robust version of the original global isNaN().
Number.isSafeInteger() 判断传递的值是否为安全整数。

数字的类型提供了不同格式的方法以从数字对象中检索信息。以下表格总结了 数字类型原型上的方法。

方法描述
toExponential() 返回一个数字的指数形式的字符串,形如:1.23e+2
toFixed() 返回指定小数位数的表示形式,var a=123,b=a.toFixed(2)//b="123.00"
toPrecision() 返回一个指定精度的数字。如下例子中,a=123 中,3 会由于精度限制消失 var a=123,b=a.toPrecision(2)//b="1.2e+2"

 

数学对象

对于内置的Math数学常项和函数也有一些属性和方法。比方说, Math 对象的 PI 属性会有属性值 pi (3.141...),你可以像这样调用它:

Math.PI // π

同理,标准数学函数也是 Math 的方法。这些包括三角函数 ,对数,指数,和其他函数。比方说你想使用三角函数 sin,你可以这么写:

Math.sin(1.56)

需要注意的是 Math 的所有三角函数参数都是弧度制。

下面的表格总结了 Math 对象的方法。

Math 的方法

方法描述
abs() 绝对值
sin(), cos(), tan() 标准三角函数;参数为弧度
asin(), acos(), atan(), atan2() 反三角函数; 返回值为弧度
sinh(), cosh(), tanh() 双曲三角函数; 参数为弧度。
asinh(), acosh(), atanh() 反双曲三角函数;返回值为弧度。
pow(), exp(), expm1(), log10(), log1p(), log2() 指数与对数函数
floor(), ceil() 返回小于等于参数的最大整数;返回大于等于参数的最小整数
min(), max() 返回一个以逗号间隔的数字参数列表中的较小或较大值 (分别地)
random() 返回 0 和 1 之间的随机数。
round(), fround(), trunc(), 四舍五入和截断函数
sqrt(), cbrt(), hypot() 平方根,立方根,所有参数平方和的平方根两个参数平方和的平方根
sign() 数字的符号,说明数字是否为正、负、零。
clz32(), imul() 在 32 位 2 进制表示中,开头的 0 的数量。返回传入的两个参数相乘结果的类 C 的 32 位表现形式

和其他对象不同,你不能够创建一个自己的 Math 对象。你只能使用内置的 Math 对象。

 

日期对象

JavaScript 没有日期数据类型。但是你可以在你的程序里使用 Date 对象和其方法来处理日期和时间。

Date 对象有大量的设置、获取和操作日期的方法。它并不含有任何属性。

JavaScript 处理日期数据类似于 Java。这两种语言有许多一样的处理日期的方法,也都是以 1970 年 1 月 1 日 00:00:00 以来的毫秒数来储存数据类型的。

创建一个日期对象:

var dateObjectName = new Date([parameters]);

这里的 dateObjectName 对象是所创建的 Date 对象的一个名字,它可以成为一个新的对象或者已存在的其他对象的一个属性。

不使用 new 关键字来调用 Date 对象将返回当前时间和日期的字符串

  • 无参数 : 创建今天的日期和时间,例如: today = new Date();.

  • 一个符合以下格式的表示日期的字符串:"月 日,年 时:分:秒"。例如: var Xmas95 = new Date("December 25, 1995 13:30:00")。如果你省略时、分、秒,那么他们的值将被设置为 0

  • 一个年,月,日的整型值的集合,例如: var Xmas95 = new Date(1995, 11, 25)

  • 一个年,月,日,时,分,秒的集合,例如: var Xmas95 = new Date(1995, 11, 25, 9, 30, 0);.

Date 对象的方法

处理日期时间的 Date 对象方法可分为以下几类:

  • "set" 方法,用于设置 Date 对象的日期和时间的值。

  • "get" 方法,用于获取Date 对象的日期和时间的值。

  • "to" 方法,用于返回 Date 对象的字符串格式的值

  • parse 和 UTC 方法,用于解析 Date 字符串。

通过“get”和“set”方法,你可以分别设置和获取秒,分,时,日,星期,月份,年。这里有个 getDay 方法可以返回星期,但是没有相应的 setDay 方法用来设置星期,因为星期是自动设置的。这些方法用整数来代表以下这些值:

  • 秒,分:0 至 59

  • 时:0 至 23

  • 星期:0 (周日) 至 6 (周六)

  • 日期:1 至 31

  • 月份:0 (一月) to 11 (十二月)

  • 年份:从 1900 开始的年数

 

例如,假设你定义了如下日期:

var Xmas95 = new Date("December 25, 1995");

Then Xmas95.getMonth() 返回 11, and Xmas95.getFullYear() 返回 1995.

getTimesetTime 方法对于比较日期是非常有用的getTime方法返回从 1970 年 1 月 1 日 00:00:00 的毫秒数。

以下代码展示了今年剩下的天数:

var today = new Date();
var endYear = new Date(1995, 11, 31, 23, 59, 59, 999); // 设置日和月,注意,月份是 0-11
endYear.setFullYear(today.getFullYear()); // 把年设置为今年
var msPerDay = 24 * 60 * 60 * 1000; // 每天的毫秒数
var daysLeft = (endYear.getTime() - today.getTime()) / msPerDay;
var daysLeft = Math.round(daysLeft); //返回今年剩下的天数

这个例子中,创建了一个包含今天的日期的Date对象,并命名为today,然后创建了一个名为endYearDate对象,并把年份设置为当前年份,接着使用todayendYeargetTime分别获取今天和年底的毫秒数,再根据每一天的毫秒数,计算出了今天到年底的天数,最后四舍五入得到今年剩下的天数。

parse 方法对于从日期字符串赋值给现有的 Date 对象很有用,例如:以下代码使用parsesetTime分配了一个日期值给IPOdate对象:

var IPOdate = new Date();
IPOdate.setTime(Date.parse("Aug 9, 1995"));

 

示例

JSClock() 函数返回了用数字时钟格式的时间:

function JSClock() {
var time = new Date();
var hour = time.getHours();
var minute = time.getMinutes();
var second = time.getSecond();
var temp = "" + ((hour>12) ? hour-12 : hour);
if (hour == 0)
temp = "12";
temp += ((minute < 10) ? ":0" : ":") + minute;
temp += ((second < 10) ? ":0" : ":") + second;
temp += (hour >= 12) ? " P.M." : " A.M.";
return temp;
}

JSClock函数首先创建了一个叫做time的新的Date对象,因为没有参数,所以time代表了当前日期和时间。然后调用了getHoursgetMinutes以及getSeconds方法把当前的时分秒分别赋值给了hourminutesecond

接下来的 4 句在time的基础上创建了一个字符串,第一句创建了一个变量temp,并通过一个条件表达式进行了赋值,如果小时大于 12,就为 (hour - 12),其他情况就为hour,除非hour为 0,这种情况下,它会变成 12。

接下来的语句拼接了minute的值到temp后。如果minute小于 10,条件表达式就会在minute前边加个 0,其他情况下加一个冒号。然后按同样的方式在temp后拼接上了秒。

最后,如果hour是 12 或者更大,条件表达式会在temp后拼接"P.M.",否则拼接"A.M."。

 

 

标签:13,进阶,对象,JavaScript,Number,Date,日期,var,数字
From: https://www.cnblogs.com/zjy1020/p/17506046.html

相关文章

  • JavaScript进阶15笔记
    正则表达式正则表达式是用于匹配字符串中字符组合的模式。在JavaScript中,正则表达式也是对象。这些模式被用于RegExp的exec和test方法,以及String的match、matchAll、replace、search和split方法。本章介绍JavaScript正则表达式。 创建一个正则表达式你可以使......
  • JavaScript进阶14笔记.md
    文本格式化字符串JavaScript中的String类型用于表示文本型的数据。它是由无符号整数值(16bit)作为元素而组成的集合。字符串中的每个元素在字符串中占据一个位置。第一个元素的index值是0,下一个元素的index值是1,以此类推。字符串的长度就是字符串中所含的元素个数。你可......
  • JavaScript进阶17笔记
    带键的集合这一章介绍由key值标记的数据容器;Map和Set对象承载的数据元素可以按照插入时的顺序被迭代遍历。 映射Map对象ECMAScript2015引入了一个新的数据结构来将一个值映射到另一个值。一个Map对象就是一个简单的键值对映射集合,可以按照数据插入时的顺序遍历所有的......
  • JavaScript进阶16笔记
    集合类JavaScript中没有明确的数组数据类型。但是,你可以使用预定义的Array对象及其方法来处理应用程序中的数组。Array对象具有以各种方式操作数组的方法,例如连接、反转和排序。它有一个用于确定数组长度的属性和用于正则表达式的其他属性。 创建数组以下语句创建了等效......
  • JavaScript进阶19笔记
    使用PromisePromise是一个对象,它代表了一个异步操作的最终完成或者失败。本质上Promise是一个函数返回的对象,我们可以在它上面绑定回调函数,这样我们就不需要在一开始把回调函数作为参数传入这个函数了。假设现在有一个名为createAudioFileAsync()的函数,它接收一些配置和两......
  • JavaScript进阶18笔记.md
    使用对象JavaScript的设计是一个简单的基于对象的范式。一个对象就是一系列属性的集合,一个属性包含一个名和一个值。一个属性的值可以是函数,这种情况下属性也被称为方法。除了浏览器里面预定义的那些对象之外,你也可以定义你自己的对象。本章节讲述了怎么使用对象、属性、函数和......
  • JavaScript基础第06天笔记
    1-内置对象1.1内置对象JavaScript中的对象分为3种:自定义对象、内置对象、浏览器对象​前面两种对象是JS基础内容,属于ECMAScript;第三个浏览器对象属于JS独有的,JSAPI讲解内置对象就是指JS语言自带的一些对象,这些对象供开发者使用,并提供了一些常用的或是最基......
  • JavaScript进阶07笔记
    Javascript进阶学习在最新版本的火狐浏览器上才有的功能。火狐浏览器内置的Web控制台非常适合学习JavaScript,Web控制台包含两个输入模式——单行模式、多行模式。单行模式web控制台不仅可以展示当前已加载页面的信息,还包含一个可以在当前页面执行Javascript表达式的命......
  • JavaScript进阶08笔记
    语法和数据类型声明JavaScript有三种声明方式。var声明一个变量,可选初始化一个值。let声明一个块作用域的局部变量,可选初始化一个值。const声明一个块作用域的只读常量。 声明变量你可以用以下三种方式声明变量:使用关键词var。例如varx=42。这个语......
  • JavaScript进阶09笔记
    错误处理异常处理语句你可以用throw语句抛出一个异常并且用try...catch语句捕获处理它。throw语句try...catch语句异常类型JavaScript可以抛出任意对象。然而,不是所有对象能产生相同的结果。尽管抛出数值或者字母串作为错误信息十分常见,但是通常用下列其中一种异......