参照内容来自《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,全局对象,包装对象相关推荐

  1. mysql数据库权威指南_MySQL_MySQL权威指南读书笔记(三),第二章:MYSQL数据库里面的数 - phpStudy...

    MySQL权威指南读书笔记(三) 第二章:MYSQL数据库里面的数据 用想用好MYSQL,就必须透彻理解MYSQL是如何看待和处理数据的.本章主要讨论了两个问题:一是SQL所能处理的数据值的类型:二是 ...

  2. Python核心教程(第二版)读书笔记(三)

    第三章Python基础 2010-04-09 换行  一行过长的语句可以使用反斜杠'\'分解成几行.有两种例外情况一个语句不使用反斜线也可以跨行. 1.在使用闭合操作符时,单一语句可以跨多行.例如:在 ...

  3. 《编程之美》读书笔记(三):烙饼问题与搜索树

    <编程之美>读书笔记三:烙饼问题与搜索树 薛笛 EMail:jxuedi#gmail.com 前面已经写了一些关于烙饼问题的简单分析,但因为那天太累有些意犹未尽,今天再充实一些内容那这个问 ...

  4. 《How Tomcat Works》读书笔记(三)--Connector(连接器)

    <How Tomcat Works>读书笔记(三)--Connector(连接器) 这是<How Tomcat Works>第三四章的读书笔记.主要写了Tomcat4.0默认的 ...

  5. TCPIP详解Protocol 读书笔记(三) IP协议讲解

    TCP/IP详解:Protocol 读书笔记(三) Chapter3 IP:网际协议 文章目录 TCP/IP详解:Protocol 读书笔记(三) Chapter3 IP:网际协议 IP协议 IP数据 ...

  6. JavaScript复习笔记(3)——数据类型(null、undefined、NaN)与深度克隆

    JavaScript中的数据类型:Number.Boolean.String.Object.Function 但是此外还有一些容易混淆的类型如null.undefined.NaN.Array的概念 f ...

  7. 如何在JavaScript中将字符串转换为布尔值?

    我可以将表示布尔值(例如" true"," false")的字符串转换为JavaScript中的固有类型吗? 我有一个隐藏的HTML表单,该表单会根据用户在列表 ...

  8. 《大型网站技术架构》读书笔记三:大型网站核心架构要素

    来源:http://www.cnblogs.com/edisonchou/p/3806348.html 此篇已收录至<大型网站技术架构>读书笔记系列目录贴,点击访问该目录可获取更多内容. ...

  9. JavaScript读书笔记-03

    数据类型 JavaScript是弱类型的编程语言,字符串变量保存了一个字符串,稍后又将它当做数值是可以的, Var myVar = "hello"; myVar = 123; my ...

最新文章

  1. 如何才能信任你的深度学习代码?
  2. 【helloworld】-微信小程序开发教程-入门篇【1】
  3. 【学亮IT手记】HashMap集合精讲
  4. 音视频技术开发周刊 | 217
  5. Purpose of cmove instruction in x86 assembly? | cmove 指令如何避免错误的分支预测带来的开销?
  6. 工作211:新的封装组件 秒呀
  7. ceph docker mysql_使用Docker部署单机版Ceph
  8. 计算机三级之嵌入式系统学习笔记4
  9. ubuntu使用apt-get时出现could not get lock怎么解决
  10. maven 编译后无配置文件解决办法
  11. android 5.1 内核版本号,最新的安卓5.1.1 ROOT教程(不需要刷第三方内核)
  12. MVC模式在Java web 应用程序的实现
  13. 中国语音产业的江湖史
  14. C++入门项目必练100题
  15. 转换到coff期间_fatal error LNK1123: 转换到 COFF 期间失败: 文件无效或损坏 | Lellansin's 冰森...
  16. iphone图片编辑画笔_iOS13图片编辑功能使用教程
  17. 一个商人骑一头驴要穿越1000公里长的沙漠,去卖3000根胡萝卜。已知驴一次性可驮1000根胡萝卜,但每走一公里又要吃掉一根胡萝卜。问:商人共可卖出多少胡萝卜? 答:533
  18. linux 挂载nas网络存储_Linux挂载NAS
  19. 易企秀如何生成图片_易企秀如何制作圆形照片
  20. AI 入门怎么学?这份学习指南请收好!

热门文章

  1. OllyDbg的基本使用
  2. JAVA 接口 验证哥特巴赫猜想
  3. HTML制作动画制作动态大风车,CSS3 制作旋转的大风车(充满童年回忆)
  4. ElasticSeach详细安装教程--图文介绍超详细
  5. 一个十年程序员写给大家的忠告
  6. DYA9面向对象中--super关键字
  7. mark制图软件_Mac 都有哪些好用的绘图软件
  8. 灵狐插件与IDEA的集成
  9. 基于Python的简单数据处理
  10. WordPress标签云小工具详解