JS高程3.基本概念(3)

1.ECMAScript数值的范围

  由于内存的限制,在大部浏览器中,ECMAScript可以拿保存的数量的限定是
5e-324 ~
1.7976931348623157e+308,其中很小的数值保存在Number.MIN_VALUE中,最大的数值保存在Number.MAX_VALUE中。

  假如在盘算的结果出乎这一个数值的界定,这一个数值会自动被转换成特殊的Infinity值,具体来说,假设是负数,会被转换成
-Infinity(负无穷),虽然是正的,会被转换成 +Infinity(正无穷)。

  需要小心的是,假如某次总括重临的是正依然负的Infinity,则该值将无法继续加入下四次的计量,因为Infinity不是能过参加总括的数值。

  使用
isFinite()函数,可以确定一个数是否是战国,isFinite()函数在参数位于最小和最大数值之间时会再次回到true。

  eg:

  var age=18;
    alert(isFinite(age));

结果:

ECMAScript 1

 

 

2.NaN值:NaN即非数值(Not
a
Number)是一个特另外数值,那些数值用来代表一个理所当然再次回到数值的操作数未重回数值的境况(这样就不会抛出荒谬)

  eg:在其他编程语言中,任何数值除以0都有会造成错误从而结束代码的推行。但是在ECMAScript中,任何数字除以0都会回来NaN,因而不会影响其他代码的执行。

 

(对上文红色部分举行求证,在高程书上是这般写的,可是在实际,只有0除以0才会重返NaN值,正数除以0,再次来到的是Infinity,负数除以0,重返的
-Infinity)详见以下实例:

 

var age=0;
 alert(age/0);

ECMAScript 2

 

var age=18;
    alert(age/0);

ECMAScript 3

 

var age=-18;
    alert(age/0);

ECMAScript 4

 

  (1)NaN值的两个性状:

  任何关系NaN的操作都会回到NaN。

  NaN值和另外值都不等于,包括NaN本身。

  (2)isNaN()函数,该函数接收一个参数,假使该参数不是数值,它会尝试将该值转换为数值,而其它不可以转换为数值的值会造成那多少个函数重临true。

  (3)isNaN()也适用于对象,详见前面的章节。

 

3.数值转换

  有四个函数可以把非数值转换为数值:

  Number()

  parseInt()

  parseFloat()

  

  Number()可用于其余数据类型,parseInt()和parseFloat()专门用于吧字符串转换为数值。

(1)Number()函数的切切实实转换规则见高程书P30~31.

(2)由于Number()函数在转换字符串是相比较复杂而且不够客观,由此在处理整数的时候更常用的是parseInt()函数。高程P31。

(3)在行使parseInt()函数解析八进制字面量字符串时,ECMAScript
3 和ECMAScript 5 存在不同:

  var
num=parseInt(“070”);

  ECMAScript
3 认为是56(八进制),ECMAScript 5 认为是70(十进制)。因为在ECMAScript 5 
Javascript引擎中,parseInt()已经有分析不有所分析八进制的能力。在ECMAScript 5
中,即便是在非严峻情势下也是这样。

(4)可以为parseInt()函数设置第二个参数,即转向时行使的基数(多少进制)。指定基数会影响到转换的出口结果:

eg:

1 var num1=parseInt("10",2);
2      var num2=parseInt("10",8);
3      var num3=parseInt("10",10);
4      var num4=parseInt("10",16);
5     alert(num1);
6     alert(num2);
7     alert(num3);
8     alert(num4);

结果图如下:

ECMAScript 5

ECMAScript 6

ECMAScript 7

ECMAScript 8

 

注意:

  不点名基数意味着让parseInt()决定怎样分析输入的字符串,因而为了制止不当的解析,我们在使用该函数时最好指定基数,多数气象下,大家要分析的都是十进制数值,由此一贯将10看成第二个参数是不行有必要的。

 

(5)parseFloat()函数

  parseFloat()与paserInt()类似,也是从第一个字符(地点0)伊始解析每一个字符,也是分析到字符串的尾巴可能解析到遭遇一个没用的浮点数字符结束。

  也就是说,字符串的第一个小数点是卓有效用的,而第二个小数点是低效的,因而它背后的字符串将被忽视。

 

注意:

  parseFloat()只分析十进制值,它始终会忽略前导0。

  parseFloat()可以辨别所有的浮点数格式。

  eg: var num=parseFloat(“3.125e7”); 
//31250000

 

4.String类型

  String类型用于表示有零个或多少个16位Unicode字符组成的字符系列,即字符串。可以有单引号或是双引号表示,然则不可能混合使用。

 

(1)字符字面量

  String数据类型包含部分异常的字符字面量,叫做转义连串。(详见高程书P33)

(2)length属性

  任何字符串的长短都足以通过该访问其length属性取得。

  eg:

  

1 var text="hello LIN!"
2     alert(text.length);

ECMAScript 9

席卷text中的空格符,该字符串的长短是10。

 

专注:那一个特性重回的字符数包括16位字符的数量,倘诺字符串包含双字节字符,那么length属性可能不会准确地重临字符串中的字符数目。

(3)字符串的风味

  ECMAScript中字符串是不可变的,字符串一旦被创立,它们的值就不会转移,要改变某个变量保存的字符串,首先要灭绝原来的字符串,然后再另一个新值的字符串填充该变量。

  eg:

  var
lang=“java”;

  lang=lang+“Script”;

兑现这么些操作的经过是:

  首先创造一个能容纳10个字符的新字符串,然后在这几个字符串中填入“java”和“Script”,最后一步销毁原来的字符串“java”和“Script”,因为这两个字符串已经没有用了。(这么些过程在后台发生,这也是一对旧版本的浏览器在拼接字符串时进度很慢的来头。)

(4)转换为字符串

  toString()方法——重返相应值的字符串表现。

  数值,布尔值,对象和字符串值都有toString()方法。(对的,字符串也都有一个toString()方法,该措施重临字符串的一个副本。)

  一般景色下,调用toString()不用传递参数,然而在调用数值的toString()方法时,能够传递一个参数:输出数值的基数。 

  eg:

1 var num=10;
2     alert(num.toString());
3     alert(num.toString(2));
4     alert(num.toString(8));
5     alert(num.toString(10));
6     alert(num.toString(16));

 结果图依次如下:

ECMAScript 10

ECMAScript 11

ECMAScript 12

  ECMAScript 13

ECMAScript 14

 

  String()——该转型函数能够将另外项目的值转换成字符串。String()函数遵守的条条框框如下:

  如果值有toString()方法,则调用该措施并重回相应的结果。

  假使值是null,这重返“null”。

  假如值是undefined,则赶回“undefined”。

 

5.Object类型

  ECMAScript中的对象实际就是一组数据和职能的集合。对象可以通过实施new操作符后跟要成立的靶子类型的名称来创制。而创造Object类型的实例并为其添加属性和(或是)方法,就足以创立自定义对象。

eg: var o=new object();

 

Object的实例具有的性质和艺术详见高程P35。

  

ECMAScript,