《JavaScript权威指南》阅读笔记(一)

类型、值和变量

null和undefined

  • null:使用typeof运算得出的是“object”,故可认为是一个特殊的对象,含义是“非对象”。
  • undefined:typeof运算结果为“undefined”,表面这个值是这个类型的唯一成员。表示“变量为初始化”、“对象属性或者数组值不存在”、“函数没有返回值”。
  • null == undefined //=> true,故要使用严格 === 来区分它们。

全局对象

JavaScript可以直接引用它们。


图片来自书中内容

包装对象

字符串不是对象,但它有属性。只要引用了它的属性,JavaScript就会通过调用new String(s)转换成对象,注意是临时的,一旦属性引用结束,这个新建的临时对象就会被销毁。下面引用书中的例子说明一下:

书中例子

第二行代码创建了一个临时的字符串对象,并给其新增了一个属性len,并赋值为4,随即这个临时对象将会被销毁。故第三行,通过原始的字符串(未被修饰过)创建一个新的字符串对象,尝试读取len属性,这个属性自然是不存在的,最后返回t的值为undefined。
同理,数字、布尔值也会如此。我们可以通过new String()、new Number()、new Boolean()来显式的构造包装对象:
引用书中例子
此处对他们使用“==”如s==S返回true,恒等符“===”则视为不等,返回false。

类型转换

引用书中的表格
  • 显式类型转换:最简单的就是使用Number()、String()、Boolean()、Object(),如下:
显式类型转换
  • 隐式类型转换:部分运算符会,如+和!操作等等:
    x + "" \\\等价于new String(x); +x \\\等价于Number(x); !!x \\\等价于Boolean(x);注意是双等号

  • 数字到字符串的转换:


    四舍五入

    parseInt时转换值要求除去空格首字符开始为数字(parseFloat差不多)

    parseInt举例,参数二代表进制
  • 对象转换为原始值:toString()和valueOf()




变量声明

  • 作用域
i,j,k均在同一作用域内
  • var声明的变量存在变量提升
变量提升

提升后
  • var允许重复声明

语句

声明语句

  • var语句:声明变量。
  • function语句:声明函数,总是出现在js代码的顶部。


    函数声明语法

    结合var的函数定义语句也会存在变量提升,函数体的初始化仍然在原来的位置。


    函数变量f会提升
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 标签: 我的笔记 ---学习资料:http://javascript.ruanyifeng.com/ 1. 导论 ...
    暗夜的怒吼阅读 4,264评论 0 1
  • 函数JavaScript 的函数是一种对象。 对象 Javascript 中没有类这样的语言结构, Javascr...
    焉知非鱼阅读 3,157评论 0 0
  • 第三章 类型、值和变量 1、存取字符串、数字或布尔值的属性时创建的临时对象称做包装对象,它只是偶尔用来区分字符串值...
    坤少卡卡阅读 3,821评论 0 1
  • 文/怀左同学 01 昨晚睡前,读者给我发信息:学长,我开学了,暑假时踌躇满志,定了很多非常好的计划,可开学几天却什...
    怀左同学阅读 13,410评论 119 451
  • 文/寒霜 【原创】 晚霞 残霞晚照染红天,碧树凝妆逸便嬛。 最是千姿柔媚展,只叹西夕倏时蔫。 ——寒霜 注:便嬛—...
    刘寒霜阅读 3,408评论 9 21