3.4 数据类型

3.4.1 typeof操作符

var message = 'some string';
console.log(typeof message); // 'string'
console.log(typeof(message)); // 'string'
console.log(typeof 95); // 'number'

typeof操作符可能返回的字符串:undefined、boolean、string、number、object、function

注:typeof null 会返回 'object',因为null被认为是一个空的对象引用。

3.4.2 Undefined类型

// 对未初始化和未声明的变量执行typeof操作都会返回undefined
var message;
console.log(typeof message); // 'undefined'
console.log(typeof age); // 'undefined'

我们应该尽量显式地初始化变量的值,这样的话当typeof操作返回 'undefined' 时,我们就知道被检测的变量是尚未声明,而非尚未初始化。

3.4.3 Null类型

如果定义的变量准备在将来用于保存对象,则最好将它初始化为null而非其他值。这样一来只要检查该变量是否等于null值就可以知道它是否已经保存了一个对象的引用。

我们任何时候都没有必要把一个变量显式地赋为undefined,而意在保存对象的变量还没真正保存对象时应该明确被赋为null,这有助于进一步区分undefined和null。

3.4.4 Boolean类型

数据类型 转换为true的值 转换为false的值
Boolean true false
String 任何非空字符串 ""
Number 任何非零数字 0和NaN
Object 任何对象 null
Undefined 不适用 undefined

3.4.5 Number类型

console.log(NaN == NaN);    // false,NaN与任何值都不相等,包括它自身

// isNaN()如果接收到一个非数值,会首先尝试将这个值转换为数值。
console.log(isNaN(NaN)); // true
console.log(isNaN(10)); // false
console.log(isNaN('10')); // false,可以被转换成数值
console.log(isNaN('blue')); // true,不可以被转换成数值

由于Number()函数在转换字符串不够理想,我们使用parseInt()函数,它在第一个字符不是数字或负号的时候返回NaN, 如果第一个字符是数字或负号,则继续往后解析,直到遇到非数字字符,后面的会被完全忽略。

parseInt()第二个参数是基数,指定被转换的字符串是什么进制的,解析出来的结果是十进制的。

var num1 = parseInt("10", 2);  // 2(按二进制解析)
var num2 = parseInt("10", 8); // 8(按八进制解析)

为了避免错误的解析,建议无论在什么情况下都指定基数,多数情况下要解析的都是十进制数,所以始终将10作为第二个参数是非常必要的。

与parseInt()类似的是parseFloat(),在解析浮点数的时候,第一个小数点有效,第二个则无效。

3.4.6 String类型

将一个值转换为字符串有两种方法,第一种是几乎每个值都有的toString()方法(是方法不是函数),但null和undefined没有这个方法。

第二种是String()函数,它遵循以下规则:

  1. 如果值有toString()方法,则调用该方法并返回相应结果
  2. 如果值是null,则返回"null"
  3. 如果值是undefined,则返回"undefined"

3.4.7 Object类型

通过new操作符可以创建一个对象的实例:

var o = new Object();

这样创建的实例有以下常用属性和方法:

  1. constructor:保存用于创建当前对象的函数,对于上面的例子而言就是Object()
  2. hasOwnProperty(property):用于检查给定的属性property在当前对象实例中(而不是在实例的原型中)是否存在
  3. isPrototypeOf(object):用于检查当前对象是不是传进来的参数object对象的原型
  4. toString():返回对象的字符串表示
  5. valueOf():返回对象的字符串、数值或布尔值表示,通常与toString()方法的返回值相同

《JavaScript高级程序设计》第3章 基本概念的更多相关文章

  1. JavaScript高级程序设计 第三章 基本概念

    ch3 基本概念 标签(空格分隔): JavaScript 语法 标识符 - 第一个字符必须是字母.下划线或美元 - 驼峰大小写格式 严格模式 ECMAScript5引入,定义了一种解析和执行模型.此 ...

  2. 《JavaScript高级程序设计》——第二章在HTML使用JavaScript

    这章讲的是JavaScript在HTML中的使用,也就是<script>元素的属性.书中详细讲了async.defer.src和type四个<script>的属性. 下面是对第 ...

  3. JavaScript 高级程序设计 第5章引用类型 笔记

    第五章 引用类型 一.object类型 1.创建方法: 1.使用new 操作符创建 var person=new object() Person.name=”Nicholasa” Porson.age ...

  4. JavaScript高级程序设计第20章JSON 笔记 (学习笔记)

    第二十章 JSON 1.Json 可以表示三种类型的值: 1.简单值: 表示数值:5  表示字符串:“hello wrold”注表示字符串时必须使用双引号 2.对象: {“name”:“mi”,”ag ...

  5. JavaScript高级程序设计第14章表单脚本 (学习笔记)

    第十四章 表单脚本 1.阻止默认表单提交 1.提交表单数据 1.使用type=submit提交按钮 2.使用submit():方法 注意:当用户点击提交按钮时,会触发submit事件,从而在这里我们有 ...

  6. 《JAVASCRIPT高级程序设计》第一章

    在使用调制解调器的时代,频繁的表单验证对客户端来说是一个很大的负担,javascript,作为一种专门进行表单验证的客户端脚本语言诞生了.到今天,javascript早已超越了当初设定的角色.Java ...

  7. JavaScript高级程序设计学习(二)之基本概念

    任何语言的核心都必然会描述这门语言基本的工作原理.而描述的内容通常都要涉及这门语 言的语法.操作符.数据类型.内置功能等用于构建复杂解决方案的基本概念.如前所述, ECMA-262通过叫做 ECMAS ...

  8. 《JavaScript 高级程序设计》第一章:简介

    JavaScript 历史 JavaScript的诞生的主要是当时的 netspace 公司谋求为自己的浏览器 Navigator 添加一种脚本语言,以便在本地客户端进行一些行为操作,而这一功能的需求 ...

  9. JavaScript中变量、作用域和内存问题(JavaScript高级程序设计第4章)

    一.变量 (1)ECMAScript变量肯能包含两种不同的数据类型的值:基本类型值和引用类型值.基本类型值指的是简单的数据段,引用类型值指那些可能由多个值构成的对象. (2)基本数据类型是按值访问,可 ...

  10. 《JavaScript高级程序设计》——第一章JavaScript简介

    第一章主要讲了JavaScript的诞生和发展.刚刚接触JavaScript的我,似乎对这些内容并不感兴趣,快速看了一遍就开始去看第二章了. 看完第一章,收获也就是了解到JavaScript由ECMA ...

随机推荐

  1. Spring Controller 获取请求参数的几种方法

    1.直接把表单的参数写在Controller相应的方法的形参中,适用于get方式提交,不适用于post方式提交.若"Content-Type"="application/ ...

  2. 标签栏控制器(UITabBarController)

    一.标签栏控制器基础 1.绪论 a.一个标签栏是一个独立的界面对象,它经常与一个视图控制器(UITabBarController是UIViewController的子类)一起使用. b.一个标签栏项目 ...

  3. 显示或隐藏一个Grid

    The Rowset class contains two methods that can be used to show and hide all rows: ShowAllRows() Hide ...

  4. 通过 XML HTTP 把文本文件载入 HTML 元素

    新建一个.aspx文件 <%@ Page Language="C#" AutoEventWireup="true" CodeFile="01-通 ...

  5. SQL中查看数据库各表的大小

    SQL中查看数据库各表的大小 编写人:CC阿爸 2014-6-17 在日常SQL数据库的操作中,如何快速的查询数据库中各表中数据的大小. 以下有两种方法供参考: 第一种: create table # ...

  6. 操作MySQL数据库

    向表中插入数据 insert 语句可以用来将一行或多行数据插到数据库表中, 使用的一般形式如下: insert [into] 表名 [(列名1, 列名2, 列名3, ...)] values (值1, ...

  7. sql中with as的用法练习

    在工作中经常看到有人使用with as,查询很顺畅,也很快,很好奇,在网上也有不少资料,看了大神的文章,也练习一下. 首先给出两位位大神文章的链接,介绍十分详细:http://www.cnblogs. ...

  8. 实战Django:官方实例Part1

    [写在前面] 撰写这个实战系列的Django文章,是很久之前就有的想法,问题是手头实例太少,一旦开讲,恐有"无米下锅"之忧. 随着对Django学习的深入,渐渐有了些心得,把这些心 ...

  9. [terry笔记]IMPDP报错ORA-39083 Object type TYPE failed to create ORA-02304

    今天在使用impdp导入的时候(同一数据库中转换schema),遇到了 ORA-39083: Object type TYPE failed to create with error: ORA-023 ...

  10. java reflect 初始学习 动态加载类

    首先要理解Class类: 在java 的反射中,Class.forName("com.lilin.Office") 使用类的全名,这样获取,不仅仅表示了类的类类型,同时还代表着类的 ...