《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 ...
随机推荐
- ASP.NET MVC5 第4章
参考资料<ASP.NET MVC5 高级编程>第5版 第4章 模型 本章所探讨的模型是要显示.保存.创建.更新和删除的对象. 基架指使用 MVC 提供的工具为每个模型对象的标准索引构建.创 ...
- js随机生成字母数字组合的字符串 随机动画数字
效果描述: 附件中只有一个index.html文件有效 其中包含css以及html两部分内容 纯js生成的几个随机数字 每次都不重复,点击按钮后再次切换 使用方法: 1.将css样式引入到你的网页中 ...
- sqoop的eval工具
eval的作用:Evaluate a SQL statement and display the results,也就是说eval像是一个数据库的客户端工具. 一.使用eval来查询表 $ sqoop ...
- C++primer 阅读点滴记录(一)
第十三章 复制控制:(copy control) 复制构造函数(copy constructor) 复制操作符(assignment operator) ps: 什么时候需要显示的定义复制控制操作:类 ...
- ng-summit and $watch() funciton
<div ng-app> <form ng-submit="requestFunding()" ng-controller="StartUpContro ...
- python使用简单http协议来传送文件
python使用简单http协议来传送文件!在ubuntu环境下,局域网内可以使用nc来传送文件,也可以使用基于Http协议的方式来下载文件我们可以使用python -m SimpleHTTPServ ...
- rails的字符编码
想练练手,随意的写了个登陆页面,简单的只有几行. <%= form_tag('login_check') do -%><%= text_field_tag 'user_name', ...
- 第一个android应用程序
首先打开Eclipse和一个AVD.在Eclipse中选择File→New→Project→Android→Android Application Project 点击Next,按照下图所示填写 注: ...
- Microsoft SqlServer2008技术内幕:T-Sql语言基础-读书笔记-单表查询SELECT语句元素
1.select语句逻辑处理顺序: FORM WHERE GROUP BY HAVING SELECT OVER DISTINCT TOP ORDER BY 总结: 2.FORM子句的表名称应该带上数 ...
- Oracle连乘聚合函数 MUL
Oracle提供了求和(SUM),平均值(AVG)等聚合函数,但没有提供连乘的聚合函数. 比如有一个表如下: ID NUM 1 4 2 2 3 2 如果要求NUM列的连乘数,即求: 4*2*2 ,目前 ...