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:

 var num1=parseInt("10",2);
var num2=parseInt("10",8);
var num3=parseInt("10",10);
var num4=parseInt("10",16);
alert(num1);
alert(num2);
alert(num3);
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:

  

 var text="hello LIN!"
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:

 var num=10;
alert(num.toString());
alert(num.toString(2));
alert(num.toString(8));
alert(num.toString(10));
alert(num.toString(16));

 结果图依次如下:

  

  String()——该转型函数能够将任何类型的值转换成字符串。String()函数遵循的规则如下:

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

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

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

5.Object类型

  ECMAScript中的对象其实就是一组数据和功能的集合。对象可以通过执行new操作符后跟要创建的对象类型的名称来创建。而创建Object类型的实例并为其添加属性和(或是)方法,就可以创建自定义对象。

eg: var o=new object();

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

  

JS_高程3.基本概念(3)的更多相关文章

  1. JS_高程3.基本概念(4)操作符

    ECMA-262用于操作数据值的操作符包括: 算术操作符 位操作符 关系操作符 相等操作符 ECMAScript操作符的不同之处在于:它能够适用于很多值,包括字符串,数字值,布尔值,甚至是对象.(在应 ...

  2. JS_高程3.基本概念(2)

    1.ECMAScript数据类型 5种简单数据类型,分别是: Undefined Null Boolean Number String 1种复杂数据类型: Object (1)typeof操作符——检 ...

  3. JS_高程3.基本概念(1)

    1.语法 (1)ECMAScript中的一切(变量,函数名和操作符)都是区分大小写的. (2)标识符 标识符的第一个字符必须是字母,下划线或是美元符号. 其他字符可以是字母,下划线,美元符号和数字. ...

  4. JS_高程3.基本概念(6)函数

    1.ECMAScript中的函数使用function关键字来声明. eg: function sum (num1,num2){ alert(num1+num2); } sum(3,7); 注意: 在有 ...

  5. JS_高程3.基本概念(5)语句

    1.if语句 2.do-while语句:后测循环语句,循环体内的代码至少执行一次. 3.while语句:前测循环语句. 4.for语句:前测循环语句. 注意:在ECMAScript中不存在块级作用域, ...

  6. JS高程3.基本概念(4)操作符

    ECMA-262用于操作数据值的操作符包括: 算术操作符 位操作符 关系操作符 相等操作符 ECMAScript操作符的不同之处在于:它能够适用于很多值,包括字符串,数字值,布尔值,甚至是对象.(在应 ...

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

    1.ECMAScript数值的范围 由于内存的限制,在大多数浏览器中,ECMAScript能够拿保存的数据的范围是 5e-324 ~ 1.7976931348623157e+308,其中最小的数值保存 ...

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

    1.ECMAScript数据类型 5种简单数据类型,分别是: Undefined Null Boolean Number String 1种复杂数据类型: Object (1)typeof操作符--检 ...

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

    1.语法 (1)ECMAScript中的一切(变量,函数名和操作符)都是区分大小写的. (2)标识符 标识符的第一个字符必须是字母,下划线或是美元符号. 其他字符可以是字母,下划线,美元符号和数字. ...

随机推荐

  1. js高级程序设计

    defer 异步脚本,脚本延迟到文档完全被解析和显示之后再执行.只对外部脚本文件有效.按顺序执行脚本.但在实际情况下,并不一定会按照顺序执行最好只有一个延迟脚本.支持H5的浏览器会忽略给脚本设置 de ...

  2. HTTP max-age与Expires的分别

    主要重点在于我们要明白一个相对(Expires)一个绝对(max-age). 分别 max-agemax-age是HTTP/1.1中,他是指我们的web中的文件被用户访问(请求)后的存活时间,是个相对 ...

  3. 【Android】ImageView ScaleType属性值

    ImageView.ScaleType / android:scaleType值的意义区别: CENTER /center 按图片的原来size居中显示,当图片长/宽超过View的长/宽,则截取图片的 ...

  4. 查看当前的app运行的是哪个Activity

    1.确认手机连接了adb-->检查方式:adb devices 2.手机运行任意app,随意进入一个页面 3.此时cmd运行:adb shell "dumpsys window | g ...

  5. int和intege相比

    int i = 100; Integer i1 = 100; Integer i2 = new Integer(100); system.out.println(i == i1);true syste ...

  6. poj3311

    poj3311我写的第一篇状压dp,调试了好久23333,其实状压就是二进制结合位运算,把整体的状态用二进制来表示,一般是0/1,用没用过或者走没走没走过的问题,其实这种思想在搜索中也有涉及过,与dp ...

  7. log4j平稳升级到log4j2

    一.前言 公司中的项目虽然已经用了很多的新技术了,但是日志的底层框架还是log4j,个人还是不喜欢用这个的.最近项目再生产环境上由于log4j引起了一场血案,于是决定升级到log4j2. 二.现象 虽 ...

  8. python & MySQLdb(Three)

    #实现python封装 # encoding=utf8 import MySQLdb #定义类 class MysqlHelper(): def __init__(self,host,port,db, ...

  9. F - Tmutarakan Exams URAL - 1091 -莫比乌斯函数-容斥 or DP计数

    F - Tmutarakan Exams 题意 : 从 < = S 的 数 中 选 出 K 个 不 同 的 数 并 且 gcd > 1 .求方案数. 思路 :记 录 一 下 每 个 数 的 ...

  10. linux 学习笔记 防火墙设置

    1> 重新设置启动防火墙命令 #service iptables restart 2>添加防火墙规则命令 2.1 #service iptables stop 停止防火墙 2.2 #vi ...