JavaScript读书笔记(三)布尔值,null,undefined,全局对象,包装对象
参照内容来自《JavaScript权威指南》
布尔值
任意JavaScript的值都可以转换为布尔值。
部分值会被转换为false,其他转换为true。
会被转换为false的有:(1)undefined;(2)null;(3)0或者-0;(4)NaN;(5)"",即空字符串。
所有其他值,包括所有对象(数组)都会转换成true。
false与上面5个可以转换为false的值有时被称为“假值”,其余则称为“真值”。
null和undefined
null:
null,是JavaScript的关键字,常用来描述“空值”。null是一个特殊的对象值,含义是“非对象”,对null执行typeof预算,结果返回字符串“object”。
undefined:
undefined不是JavaScript的关键字,是预定义的全局变量,表明变量没有初始化。
如果要查询对象属性或数组元素的值时返回undefined则说明这个属性或元素不存在。如果函数没有返回任何值,则返回undefined。引用没有提供实参的函数形参的值也只会得到undefined。
注:
判断相等运算符“==”认为null和undefined是相等的(要使用严格相等运算符“===”来区分它们)。
null和undefined都不包含任何属性和方法。使用“.”和“[]”来存取这两个值的成员或方法都会产生一个类型错误。
如果将它们赋值给变量或者属性,或将它们作为参数传入函数,最佳选择是使用null。
全局对象
对象类型:对象,数组和函数。对于全局对象,其属性可以在JavaScript程序中直接使用。
当JavaScript解释器启动时(或者任何Web浏览器加载新页面的时候),它将创建一个新的全局对象,并给它一组定义的初始属性:
全局属性,比如undefined、Infinity和NaN
全局函数,比如isNaN()、parseInt()和eval()
构造函数,比如Date()、RegExp()、String()、Object()和Array()
全局对象,比如Math和JSON
对于JavaScript程序,在所有函数的外面,可以使用关键字this来引用全局对象。
例如:var global = this; // 定义一个引用全局对象的全局变量
在客户端JavaScript中,在其表示的浏览器窗口中的所有JavaScript代码中,Window对象充当了全局对象。这个全局Window对象有一个属性(Window),这个属性可以代替this引用自身,即引用全局对象。例如:window.load();
包装对象
JavaScript对象是一种复合值:它是属性或已命名值的集合。通过“.”符号来引用属性值。当属性值是一个函数的时候,称其为方法。例如:a.themethod();(a为对象,themethod()为方法)
而字符串,数字,布尔值都不是对象,可以调用属性的原因为:
字符串可以new String(s)的方式转换成对象,这个对象继承了字符串的方法,并被用来处理属性的引用。一旦属性引用结束,这个新创建的临时对象就会销毁。
数字通过Number()转换成对象,接下来与字符串类似。
布尔值通过Boolean()转换成对象,接下来与字符串类似。
在这三个过程中,创建的临时对象称为包装对象。
注:
(1)null和undefined没有包装对象:访问它们的属性会造成一个类型错误。
(2)包装对象的属性引用结束,这个新创建的临时对象就会销毁。例如:
var a = "watermelon"; //创建一个字符串
a.len = 10; // 为s的某个属性赋值,修改临时对象的属性
var c = a.len; // 查询这个属性
而在最后第三行代码中c最终的值为undefined。因为在第二行引用结束后,该对象就被销毁了,对象已不存在,对象的属性也就不存在。包装对象并没有太多用处。因而不用特别关注包装对象。
(3)可通过String(),Number()或Boolean()构造函数来显式创建包装对象。例如:
var s = "watermelon";
var S = new String(s);
(4)字符串,数字和布尔值的属性都是只读的,可以修改属性,但不可以定义新的属性。
JavaScript读书笔记(三)布尔值,null,undefined,全局对象,包装对象相关推荐
- mysql数据库权威指南_MySQL_MySQL权威指南读书笔记(三),第二章:MYSQL数据库里面的数 - phpStudy...
MySQL权威指南读书笔记(三) 第二章:MYSQL数据库里面的数据 用想用好MYSQL,就必须透彻理解MYSQL是如何看待和处理数据的.本章主要讨论了两个问题:一是SQL所能处理的数据值的类型:二是 ...
- Python核心教程(第二版)读书笔记(三)
第三章Python基础 2010-04-09 换行 一行过长的语句可以使用反斜杠'\'分解成几行.有两种例外情况一个语句不使用反斜线也可以跨行. 1.在使用闭合操作符时,单一语句可以跨多行.例如:在 ...
- 《编程之美》读书笔记(三):烙饼问题与搜索树
<编程之美>读书笔记三:烙饼问题与搜索树 薛笛 EMail:jxuedi#gmail.com 前面已经写了一些关于烙饼问题的简单分析,但因为那天太累有些意犹未尽,今天再充实一些内容那这个问 ...
- 《How Tomcat Works》读书笔记(三)--Connector(连接器)
<How Tomcat Works>读书笔记(三)--Connector(连接器) 这是<How Tomcat Works>第三四章的读书笔记.主要写了Tomcat4.0默认的 ...
- TCPIP详解Protocol 读书笔记(三) IP协议讲解
TCP/IP详解:Protocol 读书笔记(三) Chapter3 IP:网际协议 文章目录 TCP/IP详解:Protocol 读书笔记(三) Chapter3 IP:网际协议 IP协议 IP数据 ...
- JavaScript复习笔记(3)——数据类型(null、undefined、NaN)与深度克隆
JavaScript中的数据类型:Number.Boolean.String.Object.Function 但是此外还有一些容易混淆的类型如null.undefined.NaN.Array的概念 f ...
- 如何在JavaScript中将字符串转换为布尔值?
我可以将表示布尔值(例如" true"," false")的字符串转换为JavaScript中的固有类型吗? 我有一个隐藏的HTML表单,该表单会根据用户在列表 ...
- 《大型网站技术架构》读书笔记三:大型网站核心架构要素
来源:http://www.cnblogs.com/edisonchou/p/3806348.html 此篇已收录至<大型网站技术架构>读书笔记系列目录贴,点击访问该目录可获取更多内容. ...
- JavaScript读书笔记-03
数据类型 JavaScript是弱类型的编程语言,字符串变量保存了一个字符串,稍后又将它当做数值是可以的, Var myVar = "hello"; myVar = 123; my ...
最新文章
- 如何才能信任你的深度学习代码?
- 【helloworld】-微信小程序开发教程-入门篇【1】
- 【学亮IT手记】HashMap集合精讲
- 音视频技术开发周刊 | 217
- Purpose of cmove instruction in x86 assembly? | cmove 指令如何避免错误的分支预测带来的开销?
- 工作211:新的封装组件 秒呀
- ceph docker mysql_使用Docker部署单机版Ceph
- 计算机三级之嵌入式系统学习笔记4
- ubuntu使用apt-get时出现could not get lock怎么解决
- maven 编译后无配置文件解决办法
- android 5.1 内核版本号,最新的安卓5.1.1 ROOT教程(不需要刷第三方内核)
- MVC模式在Java web 应用程序的实现
- 中国语音产业的江湖史
- C++入门项目必练100题
- 转换到coff期间_fatal error LNK1123: 转换到 COFF 期间失败: 文件无效或损坏 | Lellansin's 冰森...
- iphone图片编辑画笔_iOS13图片编辑功能使用教程
- 一个商人骑一头驴要穿越1000公里长的沙漠,去卖3000根胡萝卜。已知驴一次性可驮1000根胡萝卜,但每走一公里又要吃掉一根胡萝卜。问:商人共可卖出多少胡萝卜? 答:533
- linux 挂载nas网络存储_Linux挂载NAS
- 易企秀如何生成图片_易企秀如何制作圆形照片
- AI 入门怎么学?这份学习指南请收好!