《JavaScript高级程序设计》第3章 基本概念
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()函数,它遵循以下规则:
- 如果值有toString()方法,则调用该方法并返回相应结果
- 如果值是null,则返回"null"
- 如果值是undefined,则返回"undefined"
3.4.7 Object类型
通过new操作符可以创建一个对象的实例:
var o = new Object();
这样创建的实例有以下常用属性和方法:
- constructor:保存用于创建当前对象的函数,对于上面的例子而言就是Object()
- hasOwnProperty(property):用于检查给定的属性property在当前对象实例中(而不是在实例的原型中)是否存在
- isPrototypeOf(object):用于检查当前对象是不是传进来的参数object对象的原型
- toString():返回对象的字符串表示
- valueOf():返回对象的字符串、数值或布尔值表示,通常与toString()方法的返回值相同
《JavaScript高级程序设计》第3章 基本概念的更多相关文章
- JavaScript高级程序设计 第三章 基本概念
ch3 基本概念 标签(空格分隔): JavaScript 语法 标识符 - 第一个字符必须是字母.下划线或美元 - 驼峰大小写格式 严格模式 ECMAScript5引入,定义了一种解析和执行模型.此 ...
- 《JavaScript高级程序设计》——第二章在HTML使用JavaScript
这章讲的是JavaScript在HTML中的使用,也就是<script>元素的属性.书中详细讲了async.defer.src和type四个<script>的属性. 下面是对第 ...
- JavaScript 高级程序设计 第5章引用类型 笔记
第五章 引用类型 一.object类型 1.创建方法: 1.使用new 操作符创建 var person=new object() Person.name=”Nicholasa” Porson.age ...
- JavaScript高级程序设计第20章JSON 笔记 (学习笔记)
第二十章 JSON 1.Json 可以表示三种类型的值: 1.简单值: 表示数值:5 表示字符串:“hello wrold”注表示字符串时必须使用双引号 2.对象: {“name”:“mi”,”ag ...
- JavaScript高级程序设计第14章表单脚本 (学习笔记)
第十四章 表单脚本 1.阻止默认表单提交 1.提交表单数据 1.使用type=submit提交按钮 2.使用submit():方法 注意:当用户点击提交按钮时,会触发submit事件,从而在这里我们有 ...
- 《JAVASCRIPT高级程序设计》第一章
在使用调制解调器的时代,频繁的表单验证对客户端来说是一个很大的负担,javascript,作为一种专门进行表单验证的客户端脚本语言诞生了.到今天,javascript早已超越了当初设定的角色.Java ...
- JavaScript高级程序设计学习(二)之基本概念
任何语言的核心都必然会描述这门语言基本的工作原理.而描述的内容通常都要涉及这门语 言的语法.操作符.数据类型.内置功能等用于构建复杂解决方案的基本概念.如前所述, ECMA-262通过叫做 ECMAS ...
- 《JavaScript 高级程序设计》第一章:简介
JavaScript 历史 JavaScript的诞生的主要是当时的 netspace 公司谋求为自己的浏览器 Navigator 添加一种脚本语言,以便在本地客户端进行一些行为操作,而这一功能的需求 ...
- JavaScript中变量、作用域和内存问题(JavaScript高级程序设计第4章)
一.变量 (1)ECMAScript变量肯能包含两种不同的数据类型的值:基本类型值和引用类型值.基本类型值指的是简单的数据段,引用类型值指那些可能由多个值构成的对象. (2)基本数据类型是按值访问,可 ...
- 《JavaScript高级程序设计》——第一章JavaScript简介
第一章主要讲了JavaScript的诞生和发展.刚刚接触JavaScript的我,似乎对这些内容并不感兴趣,快速看了一遍就开始去看第二章了. 看完第一章,收获也就是了解到JavaScript由ECMA ...
随机推荐
- 12)Java Constructor
Constructor 构造器Constructor不能被继承,因此不能重写Overriding,但可以被重载Overloading. 构造器用来确保每个对象都会得到初始化.当对 ...
- android 利用TrafficStats类获取本应用的流量
public void getData() { // PackageManager 包管理类 PackageManager packageManager = BrownserActivity.this ...
- 十天学会单片机Day1点亮数码管(数码管、外部中断、定时器中断)
1.引脚定义 P3口各引脚第二功能定义 标号 引脚 第二功能 说明 P3.0 10 RXD 串行输入口 P3.1 11 TXD 串行输出口 P3.2 12 INT0(上划线) 外部中断0 P3.3 1 ...
- Python学习教程(learning Python)--2.3.5 Python返回多个值问题
本节主要学习Python的函数是如何同时返回多个值的问题. 在学习Python的时候惊奇的发现,Python的函数可以同时返回多个值,很有意思. #define function sum def su ...
- 刀哥多线程串行队列gcd-04-dispatch_queue_serial
串行队列 特点 以先进先出的方式,顺序调度队列中的任务执行 无论队列中所指定的执行任务函数是同步还是异步,都会等待前一个任务执行完成后,再调度后面的任务 队列创建 dispatch_queue_t q ...
- opengl基础学习专题 (二) 点直线和多边形
题外话 随着学习的增长,越来越觉得自己很水.关于上一篇博文中推荐用一个 学习opengl的 基于VS2015的 simplec框架.存在 一些问题. 1.这个框架基于VS 的Debug 模式下,没有考 ...
- java路径问题总结
平时写程序的时候,很多时候提示文件找不到,而抛出了异常,现在整理如下[一 相对路径的获得] 说明:相对路径(即不写明时候到底相对谁)均可通过以下方式获得(不论是一般的java项目还是web项目) St ...
- linux 下的使用 ln 创建 软链接 和 硬链接
linux 下的一个指令 ln 作用: 创建软链接或者硬链接 Linux 系统下每创建一个文件,系统都会为此文件生成一个 index node 简称(inode) ,而每一个文件都包含用户数据(use ...
- Mybatis 中常用的java类型与jdbc类型
JDBC Type Java Type CHAR String VARCHAR String LONGVARCHAR String NUMERIC java.math.BigDecimal DECIM ...
- Oracle Database Gateway 安装
在[Oracle HS (Heterogeneous Services)深入解析 及协同Gateway工作流程]一文中主要主要介绍了HS的工作原理,及其如何协同Gateway一起工作.那么了解Gate ...