《JavaScript高级编程》读书笔记——数据类型

ECMAScript中有5种简单数据类型(基本数据类型):Undefined、Null、Boolean、Number和String,还有一种复杂数据类型——Object,Object本质上是由一组无序的名值对组成的。

1. typeof操作符

对一个值使用typeof操作符可能返回下列某个字符串:

  • "undefined"——如果这个值未定义
  • "boolean"——如果这个值是布尔值
  • "string"——如果这个值是字符串
  • "number"——如果这个值是数值
  • "object"——如果这个值是对象或null
  • "function"——如果这个值是函数

2. undefined值是派生自null值的,因此 null==undefined 为true

 

3. Number类型

var intNum=55;     //十进制

     var octalNum1=070;     //八进制的56

     var octalNum2=079;     //无效的八进制数值,解析为79 

     var octalNum2=08;     //无效的八进制数值,解析为8

var hexNum1=0xA;     //十六进制的10

var hexNum2=0x1f;     //十六进制的31

  • NaN

NaN,即非数值(Not a Number)是一个特殊的数值,这个数值用于表示一个本来要返回数值的操作数未返回数值的情况(例如,除以0会返回NaN)。

NaN本身有两个特点:首先,任何设计NaN的操作都会返回NaN;其次,NaN与任何值都不想等,包括NaN本身(例如 NaN==NaN 返回false)。

针对这两个特点,ECMAScript定义了isNaN( )函数(例如:isNaN(NaN)返回true)。

  • 数值转换

有3个函数可以把非数值转换为数值:Number( )、parseInt( )和parseFloat( )。Number( )可以用于任何数据类型,另外两个函数则专门用于字符串转换数值。

Number( )函数的转换规则如下:

    • 如果是Boolean值,true和false将分别转换为1和0。
    • 如果是null值,返回0。
    • 如果是undefined,返回NaN。
    • 如果是字符串:
      • 如果只包含数字,则转换为十进制数值。
      • 如果包含有效的浮点格式,则转换为浮点数值。
      • 如果包含有效的十六进制,例如“0xf”,则转换为相同大小的十进制整数值。
      • 如果字符串是空的,则转换为0。
      • 如果字符串包含除上述之外的字符,则转换为NaN。
    • 如果是对象,则调用对象的valueOf( )方法,然后依照前面的规则转换。如果转换结果是NaN,则调用对象的toString( )方法,然后依照前面的规则转换。

parseInt( )函数转换规则:(会忽略字符串前面的空格,直至找到第一个非空格字符

    • 如果第一个字符不是数字字符或者负号,返回NaN。
    • 如果第一个字符是数字字符,会继续解析接下来的字符,直至解析完所有字符或者遇到了一个非数字字符。(例如,“1234blue”返回1234)
    • 如果字符串以“0x”开头且后跟数字字符,就会当做十六进制转换为十进制;如果以“0”开头,会当做八进制转换为十进制。(注:parseInt("****",16),第二个参数指定按十六进制解析,依次类推)

parseFloat( )与parseInt( )类似,也是从第一个字符开始解析,若遇到无效的浮点数字字符则停止,忽略后面的字符串(例如:“22.34.5”返回22.34)。第二个区别在于它始终会忽略前导的零。如果可解析为整数,则返回整数。

4. String类型

在调用数值的toString( )方法时,可传递一个参数:输出数值的基数。

null和undefined没有toString( )方法。在不知道是null或undefined的情况下,可使用转型函数String( ):

var value1=10;

var value2=true;

var value3=null;

var value4;

alert(String(value1));     //"10"

alert(String(value2));     //"true"

alert(String(value3));     //"null"

alert(String(value4));     //"undefined"

5. Object类型

Object的每个实例都具有下列属性和方法:

  • constructor:保存着用于创建当前对象的函数。
  • hasOwnProperty(propertyName):用于检查给定的属性在当前对象实例中是否存在。
  • isPrototypeOf(object):用于检查传入的对象是否是传入对象的原型。
  • propertyIsEnumerable(propertyName):用于检查给定的属性是否能够使用for-in语句累美剧。
  • toLocaleString( ):返回对象的字符串表示,该字符串与执行环境的地区对应。
  • toString( ):返回对象的字符串表示。
  • valueOf( ):返回对象的字符串、数值或布尔值表示;通常与toString( )方法相同。
时间: 2024-10-10 17:59:29

《JavaScript高级编程》读书笔记——数据类型的相关文章

javascript高级编程学习笔记(二)

写读书笔记的好处在于加深记忆,前一篇总结了编程中创建的对象的几种方式,以及常用的方式,这一篇总结实现继承的方式: 1.对象冒充: function ClassA(sColor) { this.color = sColor; this.sayColor = function () { alert(this.color); }; } function ClassB(sColor, sName) { this.newMethod = ClassA; this.newMethod(sColor); de

JavaScript高级程序设计-读书笔记(4)

第11章 DOM扩展 1.选择符API Selector API Level 1 的核心是两个方法:querySelector()和querySelectorAll().在兼容的浏览器中,可以通过Document及Element类型的实例调用它们.目前完全支持Selector API Level 1的浏览器有IE 8+. Firefox 3.5+. Safari 3.1+. Chrome和Opera 10+. querySelector()方法接收一个CSS选择符,返回与该模式匹配的第一个元素,

javascript 高级编程系列 - 基本数据类型

javascript中的基本数据类型包括: Undefined, Null, Boolean, Number, String 5种数据类型 1. Undefined 类型 (只有一个值 undefined, 常被用来表示未初始化的变量) 如果一个变量未进行初始化则它的初始值为undefined, 数据类型为Undefined var myVar; myVar === undefined               // return true typeof myVar === 'undefine

JavaScript高级程序设计-读书笔记(6)

第20章 JSON JSON是一个轻量级的数据格式,可以简化表示复杂数据结构的工作量 JSON的语法可以表示一下三种类型的值 l        简单值:使用与JavaScript相同的语法,可以在JSON中表示字符串.数值.布尔值和null.但JSON不支持JavaScript中的特殊数值undefined. “Hello world!” l        对象(属性的值可以是简单值,也可以是复杂类型值,如下这样在对象嵌入对象) { “name” : ”Nicholas”, “age” : 29

JavaScript高级编程(学习笔记)

一 内存分配 1,栈:由计算机管理,先进后出,快但不自由  堆:由程序员控制,自由 2,引用类型存于堆,值类型存于声明它的地方 二 垃圾回收 1,找出不再使用的变量(堆内存中,没有栈内存指向它),然后释放掉其占用的内存,但是这个过程不是时时的,因为其开销比较大,所以垃圾回收器会按照固定的时间间隔周期性的执行. 2,离开作用域标记可删,大部分浏览器都是使用这种方式进行垃圾回收,区别在于如何标记及垃圾回收间隔而已 3,JavaScript对象通过标记清除的方式进行垃圾回收,但非JavaScript原

JavaScript高级程序设计读书笔记之OOP

关于JavaScript创建对象的方式: 1.工厂模式 1 function createPerson(name, age, job){ 2 var o = new Object(); 3 o.name = name; 4 o.age = age; 5 o.job = job; 6 o.sayName = function(){ 7 alert(this.name); 8 }; 9 return o; 10 } 11 var person1 = createPerson("Nicholas&qu

JavaScript高级程序设计-读书笔记(3)

第8章 BOM 1.window对象 (1)全局作用域 BOM的核心对象是window,它表示浏览器的一个实例.在浏览器中,window对象既是通过JavaScript访问浏览器窗口的一个接口,又是ECMAScript规定的Global对象. 所有在全局作用域中声明的变量.函数都会变成window对象的属性和方法. (2)窗口关系及框架 如果界面中包含框架,这每个框架都拥有自己的window对象,并且保存在frames集合中,可以通过数值的索引(从0开始,从左至右,从上到下)或者框架名称来访问相

javascript高级程序设计 读书笔记1

第二章  在HTML中使用JS 加载JS有三种:行内,head头部和外部链接JS   最好使用外部链接<script src="example.js" ></script>(推荐),在script标签中不需要放任何代码,放了也会被忽略.也可以使用<script src="example.js" /> 但是语法不符合HTML规范  所以不要这样写. 在传统做法中,script放在head中,但是会等到加载完JS再执行DOM,页面会延

Javascript高级程序设计读书笔记(第三章)

第3章 基本概念 3.4 数据类型 5种简单数据类型:undefined.boolean.number.null.string. typeof操作符,能返回下列某个字符串:“undefined”.“boolean”.“number”.“string”.“object”.“function” typeof null = "object" 对未初始化和未声明的变量执行typeof操作都返回“undefined”,如下所示 var message; //未初始化 //var age; //未

javascript高级程序设计读书笔记2

<!DOCTYPE HTML>//这个网页的文档类型,这个是html5的写法Bootstrap使用的某些HTML元素和CSS属性需要文档类型为HTML5 doctype.因此这一文档类型必须出现在项目的每个页面的开始部分 <html lang="en">//这里的lang="en"可以删除,如果不删除的,用谷歌之类打开,它会认为是英文的,会自动给翻译(如果设置了自动翻译的话) 有两个版本的 jQuery 可供下载:Production ver