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));

结果:

 

 

2.NaN值:NaN即非数值(Not
a
Number)是一个异常的数值,这个数值用来代表一个当返回数值的操作数未返回数值的事态(这样尽管非会见丢弃来荒唐)

  eg:在另外编程语言中,任何数值除以0且来会客促成错误从而停止代码的实施。但是当ECMAScript中,任何数字除以0都见面回到NaN,因此不见面潜移默化外代码的执行。

 

(对达到文黄色部分开展认证,在高程书上是这么写的,但是以其实,只有0除以0才见面回来NaN值,正数除了以0,返回的是Infinity,负数除以0,返回的
-Infinity)详见以下实例:

 

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

 

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

 

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

 

  (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);

结果图如下:

 

注意:

  不指定基数意味着被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);

连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));

 结果图依次如下:

  

 

  String()——该转型函数能够以其他类型的值转换成为字符串。String()函数遵循的条条框框如下:

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

  如果值是null,这回“null”。

  如果值是undefined,则回“undefined”。

 

5.Object类型

  ECMAScript中之目标实际就是同等组数和效能的聚合。对象足以透过推行new操作符后以及要创建的目标类型的称谓来创造。而创办Object类型的实例并也那补充加属性和(或是)方法,就可创造于定义对象。

eg: var o=new object();

 

Object的实例具有的性和方法详见高程P35。