特别注意:ECMAScript是区分大小写的。

一、变量

  1、ECMAScript的变量是松散型的。所谓松散型就是可以用来保存任何类型的数据。即每个变量仅仅是一个用于保存值的占位符而已。定义变量时要使用var操作符,后跟变量名。

    注意:省略var操作符,从而可以创建一个全局变量。不推荐这样的做法。
  2、多个变量定义,用多个逗号隔开即可:

var messgage='',
content=,
example=false;

二、数据类型

  ECMAScript有五种简单【基本】数据类型:undefined、null、Boolean、String、Number。还有一种复杂的数据类型:Object。Object是由一组无序的名值对组成的。ECMAScript不支持任何创建自定义类型的机制。而所有值最终都将是上述6中数据类型之一。

  (一)、typeof操作符

  typeof用来检测变量的数据类型。对一个值使用操作符typeof可能返回下列某个字符串:

“undefined”:该值未定义;

“boolean”:该值是布尔值;

“string”:该值是字符串;

“number”:该值是数值;

“object”:该值是对象或null;

“function”:该值是函数。

具体的用法:

var message='';
alert(typeof (message));
alert(typeof message);
alert(typeof );

  这几个例子说明,typeof操作符的操作数可以是变量,也可以是数值字面量。注意:typeof是一个操作符而不是函数。所以圆括号可以使用,但是不是必需的。

特殊点:typeof null会返回“object”,因为特殊值null被认为是一个空的对象引用。Safari5及之前版本、Chrome7及之前版本会返回“function”,其他浏览器都会返回“object”。

(二)、数据类型的关键点

  1、未初始化的变量默认取得undefined值。

Number

  2、Number类型分为整数型和浮点型【即双精度数值】。保存浮点类型数值需要的内存空间是保存整数型数值的两倍。因此ECMAScript会不遗余力的将浮点类型转换为整数类型。

  3、极大或极小的浮点值,可以用科学计数法e来表示。例如:

var f=3.25e5;<======>var f=325000
var m=0.00003; <=======>var m=3e-5;

  4、浮点值最高精度是17位小数。但在进行算术计算时,其精度远远不如整数。例如:0.1+0.2的结果不是0.3 ,而是0.30000000000000004。

  5、Js由于内存的限制,不能保存世界上所有的数值。最小数值保存在Number.MIN_VALUE,最大数值保存在Number.MAX_VALUE.若超出Number.MIN_VALUE,返回-infinity;超出Number.MAX_VALUE返回Infinity【正无穷】。

  6、判断一个数值是否超出了JS的数值范围,可以isFinite()方法:

var result=Number.MAX_VALUE+Number.MAX_VALUE;
console.log(isFinite(result)); //false

NaN

  7、NaN表示一个本来要返回数值的操作未返回数值的情况【这样就不会报错了】。

  8、NaN有两个特点:首先:任何涉及NaN的操作都会返回NaN; 其次,NaN不等于任何值,包括自己本身。

alert(NaN==NaN);  //false

  9、针对NaN的两个特点,ECMAScript制定了isNaN()【“不是数值”】的方法,判断一个参数是否不是数值。也可以用于对象的判断。具体的解析情况:

alert(isNaN(NaN));  //true  (NaN不是数值)
alert(isNaN()); //false
alert(isNaN("")); //false("10"可以被转换为数值)
alert(isNaN("hello")); //true("hello"可以被转换为数值)
alert(isNaN(true)); //false(true可以被转换为数值:1)

10、将非数值转换为数值的三个方法:Number()、 parseInt()、parseFloat()。

11、Number()转换为数值的规则:

  1)Boolean转换为0和1;

  2)空字符串、null转换为0;undefined转换为NaN;

  3)整数数值和浮点数值,简单的传入和返回;

  4)若字符串包含十六进制格式,例如:“0xf”,则转换成相同大小的十进制数值;

  5)其他无法转换的返回:NaN;

  6)对象也可以进行转换。原理是:调用对象的valueOf()方法,然后转换。

var num1=Number('hello');  //NaN
var num2=Number(""); //
var num3=Number('true'); //NaN (boolean字符串转换不了)
var num4=Number(true); //
var num5=Number(""); //0
var num6=Number('01.230'); //1.23

注意:处理整数类型的转换,最常使用的是:parseInt();

12、parseInt()数值转换规则:

  1)更多看其符合数值模式;

  2)忽略字符串前面的空格,从第一个非空字符开始进行识别转换;

  3)若第一个非空字符不是负号或不是数字,parseInt()会返回NaN,【即parseInt()在解析空字符串时候,返回的是NaN】;

  4)parseInt()是一个字符一个字符解析字符串,直到解析完字符串或者遇到一个非数字字符。

  5)若字符串第一个字符是数字字符,parseInt()也能够识别出各种整数格式(十进制、八进制【以0开头】、十六进制【以0x开头】);

eg:

var num1=parseInt('');                  //NaN (空字符)
var num2=parseInt('1234hello'); //
var num3=parseInt('22.3'); //
var num4=parseInt('he220'); //NaN
var num5=parseInt(''); //56(八进制)
var num6=parseInt(''); //
var num7=parseInt('0xf'); //15(十六进制数)

注意点:parseInt()在解析八进制的时候,ECMAScript3 和5存在歧义。

var num=parseInt('');       //ECMAScript 3认为是 56(八进制);但是ECMAScript 5认为是:70(十进制)

原因是:ECMAScript 5 JS引擎中,parseInt()不再具有解析八进制的能力,因此,会认为前面的0是无效的。

解决之法是:parseInt()方法增加了第二个参数,表示转换时使用的基数(即多少进制)。

eg:

var num=parseInt('0xf',);  //15

//如果指定具体的基数,字符串可以不用带‘0x’;不指定的话,会返回NaN。如
var num2=parseInt('f',); //
var num3=parseInt('f'); //NaN

指定具体基数,会影响字符串转换的结果:

var num1=parseInt('',);  //2 (二进制)
var num1=parseInt('',); //8(八进制)
var num1=parseInt('',); //10(十进制)
var num1=parseInt('',); //16(十六进制)

友情提示:为了避免错误的解析,我们在使用parseInt()时候,要制定具体的基数。

13、parseFloat()的解析规则:【解析原理同parseInt()】

  1)十六进制的字符串,始终会解析成0;

  2)始终会忽略前导0,不管是十进制还是八进制;

eg:

var f1=parseFloat('120hel');   //120(整数)
var f2=parsetFloat('0xf'); //0(十六进制始终解析为0)
var f3=parsetFloat(''); //NaN(同parseInt())
var f4=parseFloat(09.230); //9.23
var f5=parseFloat(''22.3.); //22.3

String

1、转换为字符串的方法:toString() 和String();

2、数字、布尔类型、对象和字符串都有toString()方法,但是null和undefined没有toString()方法;

3、数字的toString()方法可以传递一个参数,表示转换的基数。【默认的基数是10,即十进制】eg:

var num=;
num.toString(); // '10'
num.toString(); // '1010'
num.toString(); // '12'
num.toString(); // '10'
num.toString(); // 'a'

4、String()转换规则:

  1)有toString(),调用并转换返回;

  2)null,返回“null”;

  3)undefined,返回“undefined”

Object

  1、ECMAScript中的对象是一组数据和功能的集合。用关键字new创建对象。

   2、Object是所有对象的基础。Object类型具有的属性和方法同样存在于更具体的对象中。Object的每个实例都具有下列属性和方法:

    1)Constructor:保存着用于创建当前对象的函数。

    2)hasOwnProperty(propertyName):用于检查给定的属性在当前对象实例中是否存在(而不是存在于实例原型中);参数propertyName必须以字符串的形式指定。

    3)IsPrototypeOf(object):用于检查传入的对象是否是另一个对象的原型。

    4)propertyIsEnumerable(propertyName):用于检查给定的属性是否能够用for……in语句来枚举。参数必须是字符串形式

    5)toLocalString():返回对象的字符串表示,该字符串与执行环境的地区对应。

    6)toString():返回对象的字符串表示。

    7)valueOf():返回对象的字符串、数值或布尔表示。通常与toString()方法的返回值相同。

JavaScript高级程序设计(三):基本概念:数据类型的更多相关文章

  1. 《JavaScript高级程序设计》 -- 基本概念(一)

    之前看过好几遍<JavaScript高级程序设计>这一书,但是始终没有完完整整的看过一遍.从现在开始我会把它完整的啃一遍,每章节都记录笔记,自己的心得,加油! 由于前三章的内容比较简单,因 ...

  2. 读javascript高级程序设计01-基本概念、数据类型、函数

    一. javascript构成 1.javascript实现由三部分组成: ECMAScript:核心语言功能 DOM:文档对象模型,提供访问和操作网页内容的方法和接口 BOM:浏览器对象模型,提供与 ...

  3. javascript 高级程序设计 三

    Sorry,前两张介绍的主题还是JavaScript,而第一章介绍了JavaScript和ECMAScript区别,所以前两章介绍的主题应该改为ECMAScript,但是 标题就不改了因为现在人们习惯 ...

  4. JavaScript 高级程序设计 02-变量、数据类型

    一.JavaScript变量 1.变量的定义 在定义变量时,统一使用关键字var,后跟变量名(即标识符,如果不知道什么是标识符,可以到这去查看),如下 var message; //定义一个变量 注意 ...

  5. JavaScript 高级程序设计 01-基本概念

    一.JavaScript组成 1.一个完成JavaScript是由ECMAScript.DOM.BOM三部分组成的. ECMAScript:提供核心语言功能--语法.类型.语句.关键字.保留字.操作符 ...

  6. 《JavaScript高级程序设计》读书笔记 ---数据类型

    ECMAScript 中有5 种简单数据类型(也称为基本数据类型):Undefined.Null.Boolean.Number.String和Object——复杂数据类型,Object 本质上是由一组 ...

  7. JavaScript高级程序设计-(2)基础概念

    for-in 语句 for-in 语句是一种迭代语句,用来枚举对象属性,语法:for (property in expression) statement实例:for(var propName in ...

  8. 读javascript高级程序设计00-目录

    javascript高级编程读书笔记系列,也是本砖头书.感觉js是一种很好上手的语言,不过本书细细读来发现了很多之前不了解的细节,受益良多.<br/>本笔记是为了方便日后查阅,仅作学习交流 ...

  9. JavaScript 高级程序设计 目录

    为什么会写这个学习教程呢??因为一直以来,学习JavaScript都没有系统的学过,用什么学什么,所以今天开始,重新把JavaScript系统的学一遍!(本人也是菜鸟一枚,语文水平也还是小学程度,看得 ...

随机推荐

  1. iOS开发核心语言Objective C —— 所有知识点总结

    C和OC对比 OC中主要开发在什么平台上的应用程序?答:可以使用OC开发Mac OS X平台和iOS平台的应用程序 OC中新增关键字大部分是以什么开头?答:OC中新增关键字大部分是以@开头 OC中新增 ...

  2. charindex的用法

    declare @str nvarchar(50);set @str='462,464,2';select @str as '字符串'select len(@str) as '字符长度' select ...

  3. DDD 领域驱动设计-谈谈 Repository、IUnitOfWork 和 IDbContext 的实践

    http://www.cnblogs.com/xishuai/p/ddd-repository-iunitofwork-and-idbcontext.html

  4. PowerDesigner 物理数据模型(PDM)

    PowerDesigner 物理数据模型(PDM) 说明 数据库脚本sqldatabasegeneration存储   目录(?)[+]   一.     PDM 介绍 物理数据模型(Physical ...

  5. ECSHOP在线手册之模板结构说明 (适用版本v2.7.3)

    名称 类型 备注(作用或意义) 文件(目录)名可否更改 images 目录 存放模板图片目录 不可更改 library 目录 存放模板库文件目录 不可更改 screenshot.png 图片 用于“后 ...

  6. git 快速入门(二)

    一.引子 git代码托管的优秀工具之一, 其工作原理和svn截然不同.一旦拥有主干master分支权限, 只要在本地拉取主干分支, 可以随时随地切换分支. 它拥有众多优点,eg :支持在断网的情况下, ...

  7. CentOS 下SSH无密码登录的配置

    CentOS 下SSH无密码登录的配置 最近学习Hadoop.它要求各节点之间通过SSH无密码登录,配置SSH的时候费了一番功夫,记录下来,以备忘. 配置SSH无密码登录需要3步: 1.生成公钥和私钥 ...

  8. 【转】与BT下载相关的概念

    1. DHT DHT全称叫分布式哈希表(Distributed Hash Table),是一种分布式存储方法.在不需要服务器的情况下,每个客户端负责一个小范围的路由,并负责存储一小部分数据,从而实现整 ...

  9. linux tomca几个配置文件及点

    --------------------推荐----配置2---------------------<Connector port="8081"executor=" ...

  10. php中setcookie函数用法详解(转)

    php中setcookie函数用法详解:        php手册中对setcookie函数讲解的不是很清楚,下面是我做的一些整理,欢迎提出意见.        语法:        bool set ...