《JavaScript权威指南》随笔(一)

《Javascript权威指南》就是前端工程师口中常说的犀牛书,得名是由于中文翻译出版的书籍封面是一只犀牛,是学习JavaScript的必读书籍。

JavaScript概述

JavaScript与Java无关,是面向Web的编程语言。前端

前端开发工程师必备的三样技能:描述网页内容的HTML;描述网页样式的CSS和描述网页行为的JavaScript。web

JavaScript是高端的、动态的、弱类型的编程语言,很是符合面向对象和函数式编程的思想。正则表达式

EMCAScript是JavaScript的标准。编程

JavaScript语言核心针对文本、数组、日期和正则表达式定义了许多API,但自己并不提供输入输出功能,输入输出功能由JavaScript的宿主环境(一般指的是web浏览器)提供。数组

词法结构

字符集

  • 使用Unicode字符集,该字符集是ASCII和Latin-1的超集。
  • 区分大小写。
  • 一般忽略换行符、制表符和连续空格。
  • 转义序列以u开头,使用4个十六进制字符表示
  • 容许多种方式对同一个字符编码,并定义了标准化的解码方式。

注释

  • 在行尾“//”以后的文本都会被JavaScript认为是注释并被解释器忽略。
  • 还可使用“/”和“/”来包含一段多行注释,能够跨行书写,但不能够嵌套。

直接量

  • 就是在程序中直接使用的数据值。例如:整数和小数,字符串,布尔值,null,正则表达式,对象,数组。

标识符和保留字

  • 用来对变量和函数命名的名字和标记
  • 必须以字符、下划线(_)、美圆符号($)开头,后续可使用字符、数字、下划线、美圆符号。注意数字不容许做为开头出现,以便解释器能够区分标识符和数字。
  • 支持全部的Unicode字符集,可是为了移植性考虑,建议只是用Unicode字符和数字。
  • 被拿来作本身的关键字的标识符被称为保留字。
  • 具体实现可能定义独有的全局变量和函数,每种JavaScript运行环境都有全局属性列表。

可选的分号

  • 使用分号分隔语句。
  • 当每条语句独占一行时,能够省略分号。
  • 解释器在缺乏分号就没法运行的状况下会自动添加分号(注意不必定是每一个换行符处)。
  • return break continue以后的表达式不能使用换行,虽然多数状况下不会报错,但会产生逻辑错误。

类型、值和变量

  • 表示并操做的值的类型称做数据类型。
  • 变量是值的符号名称,能够经过名称来得到对值的引用。
  • JavaScript的数据类型分为两类:原始类型和对象类型。
  • 原始类型包括数字、字符串和布尔值。除此以外还有两个特殊的原始值:null和undefined。
  • 对象是属性的集合,每一个属性都由“名/值对”(值能够是原始值,也能够是对象)构成。
  • 普通的JavaScript对象是“命名值”的无序集合,数组是有序集合。
  • 函数也是一种特殊的对象。
  • 初始化(使用new运算符)一个新建的对象,咱们称为构造函数。
  • 每一个构造函数定义了一类(class)对象,表示由构造函数初始化对象的集合。
  • JavaScript语言核心定义了Array,Function,Date,RegExp和Error特殊的对象。
  • 解释器有本身的内存管理机制,可自动进行内存的垃圾回收,当再也不有任何应用指向一个对象,该对象所占内存资源被回收。
  • JavaScript自由进行数据类型转换。
  • 变量是无类型的,能够被赋予任何类型的值,使用var声明变量。

数字

  • 不区分整数值和浮点数值,全部数字均用浮点数值表示。
  • 采用IEEE754标准定义的64位浮点格式表示数字,实际操做时则是基于32位整数。
  • 数字直接量前添加(-)号能够获得负值,(-)是一元求反运算符。

整型

  • 用一个数字序列表示十进制整数。
  • 以“0x”和“0X”位前缀的是十六进制直接量,其后用0-9和A-F表示。
  • ECMAScript标准不支持八进制表示,可是某些实现容许采用八进制表示整数。以数字0为前缀,0-7的序列表示八进制数。
  • 严格模式下,明确禁止八进制数。

浮点型直接量

  • 能够含有小数点,采用传统的实数写法,由整数部分,小数点和小数部分组成。
  • 还可采用指数计数法表示,实数后面跟字母e或者E,再加指数。

算术运算

  • 算数运算符是用来进行数字运算的。包括加法运算符(+),减法运算符(-),乘法运算符(*),除法运算符(/)和求余运算符(%)。
  • 除基本运算符外,还支持更加复杂的算术运算,经过做为Math对象的属性定义的函数和常亮实现。

算术运算溢出、下溢或被零整除时不会报错,结果为特殊值。浏览器

  • 溢出时表示Infinity(正无穷)或-Infinity(负无穷)。基于它们的算术运算结果仍是Infinity(保留正负号)。
  • 下溢表示为“负零”。返回0,不多用到。
  • 被零整除时用无穷表示,零除以零则用NaN表示,除此以外,无穷除以无穷,给负数开方都会获得NaN。
  • NaN不等于自身,判断NaN为isNaN()方法,判断无穷使用isFinite()方法。

二进制浮点数和四舍五入错误

  • IEEE-754浮点数表示法是一种二进制表示法。
  • 能够精确表示1/二、1/8和1/1024这种,可是没法精确表示1/十、1/100等。没法精确表示0.1,因此0.3-0.2==0.2-0.1返回一个false。

日期和时间

  • Date()构造函数用来建立表示日期和时间的date对象,包含getFullYear()、getMonth()、getDate()、getDay()、getHours()、getUTCHours()方法。

文本

  • 字符串是16位不可变的有序序列。
  • 采用UTF-16编码的Unicode字符集。

字符串直接量

  • 字符串直接量能够写在多行中,但每行必须以结束。

转义字符

  • 以后加一个字符就不在表示他们的字面含义,例如n表示一个换行符。

字符串的使用

  • +表示字符串链接,将第二个字符串拼到第一个字符串的后面。
  • length属性表示字符串的长度。
  • 字符串固定不变,变化是由于返回了新的字符串。

模式匹配

  • RegExp()函数是一个构造函数,建立正则表达式。

布尔值

  • 表示两种状态,使用保留字true和false。
  • 包含toString()方法,能够转换成‘true’和‘false’
相关文章
相关标签/搜索