JavaScript权威指南读书笔记(2)——类型、值和变量

1、JavaScript的数据类型分为两类:原始类型、对象类型。原始类型包含:数字、字符串、布尔值
      两个特殊的原始值:null(空)与undefined(未定义),不属于数字、字符与布尔值。

2、对象是属性的集合,每个属性都是一个名/值 对,值可以使原始类型,也可以是对象类型。

3、数组、函数都是JavaScript定义的特殊对象。预先定义的对象有:Date(日期)、RegExp(正则)、Error(错误)。

4、JavaScript内置内存管理机制,不用手动进行对象的销毁。

5、JavaScript数据类型分为可变类型和不可变类型。对象和数组属于可变类型,数字、布尔值、null和undefined属于不可变类型。字符串可以看成是由字符组成的数组,但是属于不可变类型。

6、JavaScript变量是无类型的,同一个变量可以赋予任何类型的值。

7、JavaScript中不是所有环境都支持8进制数,慎用,最好不用。

8、JavaScript中的算术运算有:加(+)、减(-)、乘(*)、除(/)、求余(%)。可以利用Math对象进行复杂运算。

9、被0整除在JavaScript中并不报错,只是简单返回无穷大(Infinity)或者负无穷大(-Infinity)。零除以零结果无意义,返回非数字(NaN)。

10、浮点数表示数字的近似值,不能直接比较相等。

11、字符串的长度是其所含16位值的个数。字符串的索引从0开始,空字符串长度为0。

12、JavaScript和HTML一起使用的时候,需要各自采用不同的引号风格。一般原则为javascrip使用单引号,HTML使用双引号,字符串内部引号必须用转义符号。

13、JavaScript中进行布尔值转换的时候,这些值会被转换成false:undefined、null、0、-0、NaN、“”(空字符串),其他所有值都会转换成true。

14、对null执行typeof运算,结果返回字符串“object”,函数没有返回任何值,则返回的是undefined,没有提供实参的函数形参的值也只会得到undefined。
       null == undefined 的结果为true,null === undefined 的结果为false
      undefined不能赋值给任何变量。

15、JavaScript的全局对象是解释器启动的时候创建的,并进行初始化。JavaScript可以直接使用,具有初始属性如下:
        全局属性:undefined、Infinity、NaN
        全局函数:isNaN()、parseInt()、eval()
        构造函数:Date()、RegExp()、String()、Object()、Array()
        全局对象:Math、JSON
        对于客户端JavaScript来说,Windows对象定义了一些额外的全局属性。
        不在任何函数内的代码,可以用this来引用全局对象。

16、存取字符串、数字、布尔值的属性时创建的临时对象称作包装对象。可以通过String()、Number()、Boolean()构造函数来显式创建包装对象。JavaScript在必要时可以将包装对象转换成原始值。包装对象与原始值之间用“==”运算符的结果为true,采用“===”运算符时,结果为null。

17、对象的比较并非值的比较,即使两个对象包含相同的属性及相同的值,也是不相等的。当两个对象引用同一个基对象时,它们才相等。将对象(数组)赋值给一个变量,仅仅是赋值的引用值,对象本身并没有复制一次。如果想得到一个对象的副本,必须显示赋值对象的每个属性或者数组的每个元素。

18、加法运算的强制类型转换规则:
       如果两个操作值都是数值,其规则为:
           (1)如果一个操作数为NaN,则结果为NaN
           (2)如果是Infinity+Infinity,结果是Infinity
           (3)如果是-Infinity+(-Infinity),结果是-Infinity
           (4)如果是Infinity+(-Infinity),结果是NaN
           (5)如果是+0+(+0),结果为+0
           (6)如果是(-0)+(-0),结果为-0
           (7)如果是(+0)+(-0),结果为+0
        如果有一个操作值为字符串,则:
            如果两个操作值都是字符串,则将它们拼接起来
            如果只有一个操作值为字符串,则将另外操作值转换为字符串,然后拼接起来
            如果一个操作数是对象、数值或者布尔值,则调用toString()方法取得字符串值,然后再应用前面的字符串规则。对于undefined和null,分别调用String()显式转换为字符串。
        可以看出,加法运算中,如果有一个操作值为字符串类型,则将另一个操作值转换为字符串,最后连接起来。

19、如果未在var声明语句中给变量指定初始值,那么虽然声明了这个变量,但在给它存入一个值之前,它的初始值就是undefined。

20、JavaScript中给一个未声明的变量赋值,默认给全局对象创建一个同名属性,它工作起来像一个正确声明的全局变量,这是一个不好的习惯并会造成很多bug。

21、在函数内声明的变量为局部变量,仅在函数体内有定义。在函数体中,局部变量的优先级高于全局变量,遇到重名现象,则局部变量会覆盖全局变量。
        JavaScript中变量没有块级作用域,取而代之的是函数作用域,意味着变量在声明它们的函数体以及这个函数体嵌套的任意函数体内都是有定义的。产生了变量在函数体中“声明提前”的现象。
        在ES6中,可以用let关键字声明的变量的作用域为块级。

22、采用var声明一个全局变量,是作为全局对象的一个不可配置属性,不能删除。不直接用var,直接给一个全局变量赋值,则此变量是作为全局对象的一个可配置属性,可以删除。例如:

var truevar = 1;              //声明一个不可删除的全局变量
fakevar  = 2;                 //创建全局对象的一个可删除属性
this.fakevar2 = 3;            //同上
delete truevar                //-》false:变量并没有被删除
delete fakevar                //-》true:变量被删除
delete this.fakevar2          //-》true:变量被删除

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
提供的源码资源涵盖了Java应用等多个领域,每个领域都包含了丰富的实例和项目。这些源码都是基于各自平台的最新技术和标准编写,确保了在对应环境下能够无缝运行。同时,源码中配备了详细的注释和文档,帮助用户快速理解代码结构和实现逻辑。 适用人群: 适合毕业设计、课程设计作业。这些源码资源特别适合大学生群体。无论你是计算机相关专业的学生,还是对其他领域编程感兴趣的学生,这些资源都能为你提供宝贵的学习和实践机会。通过学习和运行这些源码,你可以掌握各平台开发的基础知识,提升编程能力和项目实战经验。 使用场景及目标: 在学习阶段,你可以利用这些源码资源进行课程实践、课外项目或毕业设计。通过分析和运行源码,你将深入了解各平台开发的技术细节和最佳实践,逐步培养起自己的项目开发和问题解决能力。此外,在求职或创业过程中,具备跨平台开发能力的大学生将更具竞争力。 其他说明: 为了确保源码资源的可运行性和易用性,特别注意了以下几点:首先,每份源码都提供了详细的运行环境和依赖说明,确保用户能够轻松搭建起开发环境;其次,源码中的注释和文档都非常完善,方便用户快速上手和理解代码;最后,我会定期更新这些源码资源,以适应各平台技术的最新发展和市场需求。 所有源码均经过严格测试,可以直接运行,可以放心下载使用。有任何使用问题欢迎随时与博主沟通,第一时间进行解答!
提供的源码资源涵盖了小程序应用等多个领域,每个领域都包含了丰富的实例和项目。这些源码都是基于各自平台的最新技术和标准编写,确保了在对应环境下能够无缝运行。同时,源码中配备了详细的注释和文档,帮助用户快速理解代码结构和实现逻辑。 适用人群: 适合毕业设计、课程设计作业。这些源码资源特别适合大学生群体。无论你是计算机相关专业的学生,还是对其他领域编程感兴趣的学生,这些资源都能为你提供宝贵的学习和实践机会。通过学习和运行这些源码,你可以掌握各平台开发的基础知识,提升编程能力和项目实战经验。 使用场景及目标: 在学习阶段,你可以利用这些源码资源进行课程实践、课外项目或毕业设计。通过分析和运行源码,你将深入了解各平台开发的技术细节和最佳实践,逐步培养起自己的项目开发和问题解决能力。此外,在求职或创业过程中,具备跨平台开发能力的大学生将更具竞争力。 其他说明: 为了确保源码资源的可运行性和易用性,特别注意了以下几点:首先,每份源码都提供了详细的运行环境和依赖说明,确保用户能够轻松搭建起开发环境;其次,源码中的注释和文档都非常完善,方便用户快速上手和理解代码;最后,我会定期更新这些源码资源,以适应各平台技术的最新发展和市场需求。 所有源码均经过严格测试,可以直接运行,可以放心下载使用。有任何使用问题欢迎随时与博主沟通,第一时间进行解答!

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值