《JavaScript权威指南》读书笔记(3)-原始类型
JavaScript 原始类型
概述
JavaScript的数据类型分为两类:原始类型和对象类型。JavaScript中的原始类型包括数字、字符串和布尔值。
JavaScript中有两个特殊的原始值:null(空)和undefined(未定义)。
JavaScript的类型还可以分为可变类型和不可变类型。对象和数组属于可变类型,数字、字符串、布尔值、null、undefined为不可变类型(即不可变的,但可以替换)。
数字
JavaScript中不区分整数值和浮点数值,所有的数字均用浮点数值表示。JavaScript采用了运用IEEE754标准(大多数语言的浮点数都采用这种标准)定义的64位浮点格式表示数字,这意味着它能表示的最大值是±1.7976931348623157 ×10(308),最小值是±5×10(-324)。且能够表示的整数范围是从-9 007 199 254 740 992 - 9 007 199 254 740 992(即(-253)-(253)),包含边界值。如果超过范围,无法保证低位数值的精度。ex.数组引索、位操作符等基于32位整数。
Ps: JavaScript中,数字直接量前面的-(负号)是一元求反运算符,并不是数字直接量语法的组成部分。
整型直接量
1、十进制的整型直接量
2、十六进制的整型直接量 eg. 0xff, 0xCE, 0XAC.
3、八进制的整型直接量,但由于ECMAScript标准不支持八进制直接量,不建议使用。eg. 0377(0开头的数字)
浮点型直接量
科学计数法,eg. 1e9, 1E9.
浮点数只能表示有限个的实数,而实数是无限的,所以很多时候只能是真实值的一个近似表示。IEEE754浮点数表示法是二进制表示法,可以精确地表示分数,但是我们常用的分数都是十进制分数eg.1/10,1/100等。二进制浮点数表示法并不能精确地表示类似0.1这样简单的数字。eg.
var x = .3 - .2;
var y = .2 - .1;
x == y //false
由于多数的编程语言都是采用IEEE754的编码格式,所以大多数语言都存在这样的问题。本人实测,C语言同样是false。
解决方法,eg. Python的decimal(十进制表示法).
JavaScript中的算术运算
常规运算不赘述。
以下为Math对象的属性定义的函数:
| 方法 | 描述 |
|---|---|
| Math.abs(x) | 返回数的绝对值。 |
| Math.acos(x) | 返回数的反余弦值。 |
| Math.asin(x) | 返回数的反正弦值。 |
| Math.atan(x) | 以介于 -PI/2 与 PI/2 弧度之间的数值来返回 x 的反正切值。 |
| Math.atan2(y,x) | 返回从 x 轴到点 (x,y) 的角度(介于 -PI/2 与 PI/2 弧度之间)。 |
| Math.ceil(x) | 对数进行上舍入。 |
| Math.cos(x) | 返回数的余弦。 |
| Math.exp(x) | 返回 e 的指数。 |
| Math.floor(x) | 对数进行下舍入。 |
| Math.log(x) | 返回数的自然对数(底为e)。 |
| Math.max(x,y) | 返回 x 和 y 中的最高值。 |
| Math.min(x,y) | 返回 x 和 y 中的最低值。 |
| Math.pow(x,y) | 返回 x 的 y 次幂。 |
| Math.random() | 返回 0 ~ 1 之间的随机数。 |
| Math.round(x) | 把数四舍五入为最接近的整数。 |
| Math.sin(x) | 返回数的正弦。 |
| Math.sqrt(x) | 返回数的平方根。 |
| Math.tan(x) | 返回角的正切。 |
JavaScript算术运算溢出(超出运算范围)时,结果为一个特殊的值——±Infinity(无穷大)。
JavaScript算术运算下溢(运算结果无限接近于0并比JavaScript能表示的最小值还小的情况)时,结果为0(无穷大)。
JavaScript算术运算被零整除时,结果为一个特殊的值——NaN(not-a-number)。
在ES3中,Infinity和NaN是可读写的,在ES5中进行了修正,Infinity和NaN被定义为只读的。
JavaScript中的非数字值与任何值都不相等,包括本身。判断NaN不能用x==NaN来判断,而应该用函数isNaN()。类似的,JavaScript中有另一个函数isFinite(),在参数不是NaN、Infinity或-Infinity时返回true。
JavaScript中同样特殊的还有负零,它和正零值是相等的(用JavaScript的严格相等测试也是相等)。但是,1/(0)和1/(-0)是不相等的,一个是正无穷大,另一个是负无穷大。
文本
JavaScript中文本由字符串组成,字符串是一组由16位值组成的不可变的有序序列,每个字符通常来自于Unicode字符集(UTF-16)。字符串的长度是其所含16位值的个数(有些字需要由两个16位值表示)。JavaScript字符串(和其数组)的引索从零开始。JavaScript中没有类似C/Java的char字符类型,单个字符同样由字符串来表示。
字符串直接量
JavaScript中,字符串直接量可以由单引号''或双引号""括起来,由单引号定界的字符串可以包含双引号由双引号定界的字符串也可以包含单引号。
字符串直接量可以分为数行,每行必须以反斜线(\)结束(反斜线不是字符串直接量的内容)。
Ps:使用单引号定界需要格外小心英文中的缩写和所有格写法,比如can't和O'Reilly's,需要使用转义字符\'。
转义字符表:
| 转义序列 | 字符 |
|---|---|
| \b | 退格符(\u0008) |
| \f | 走纸换页 |
| \n | 换行符(\u000A) |
| \r | 回车符(\u000D) |
| \t | 水平制表符(\u0009) |
| \' | 单引号(\u0027) |
| \" | 双引号(\u0022) |
| \\ | 反斜杠(\u005C) |
| \o | NUL字符(\u0000) |
| \v | 垂直制表符(\u000B) |
| \xXX | 由两位十六进制数XX指定的Latin-1字符 |
| \uXXXX | 由4位十六进制数XXXX指定的Unicode字符 |
如果单独一个‘\’出现在其他字符前,则忽略这个'\'。
JavaScript中内置功能之一是字符串连接。eg.
msg = 'hel' + 'lo';
greeting = msg + " " + 'world';
var s = "hello world";
s.length //字符串长度
//其他的属性在"学习笔记(4)——对象类型"中介绍
JavaScript中,除了使用charAt()方法,也可以使用[]来访问字符串中的单个字符(16位值):
s = "hello, world";
s[0] //"h"
s[s.length-1] //"h"
正则表达式直接量
正则表达式学习起来较为复杂,这里先跳过,后续再进行学习。
这里简要给出几个例子,eg.
var a = /^HTML/;
var b = /[1-9][0-9]*/;
var c = /\bjavascript\b/i;
布尔值(true or false)
与C/Java语言中的布尔值一样的含义,不多介绍。
null和undefined
null是JavaScript中的关键字,表示一个特殊值——“空值”,typeof null的运算结果为object。与C/Java中的用法类似。
undefined也是JavaScript中的关键字,表示一个特殊含义——“未定义”。typeof undefined的运算结果也是undefined。
通常地,当变量没有初始化,查询对象的属性或是数组元素的值不存在时,返回undefined,表明不存在。函数没有任何返回值时,同样返回undefined。引用没有提供实参的函数形参的值也只会得到undefined。
null和undefined并不相同。在JavaScript中,相等运算如下:
null == undefined //=>true
null === undefined //=>false
null和undefined都没有任何属性和方法。使用"."和"[]"来存取这两个值的成员或方法都会产生一个类型错误。
相关
HTML特殊转义字符列表
| 显示 | 说明 | 实体名称 | 实体编号 |
|---|---|---|---|
| 半方大的空白 |   |   | |
| 全方大的空白 |   |   | |
| 不断行的空白格 | |   | |
| < | 小于 | < | < |
| > | 大于 | > | > |
| & | &符号 | & | & |
| " | 双引号 | " | " |
| © | 版权 | © | © |
| ® | 已注册商标 | ® | ® |
| ? | 商标(美国) | ? | ™ |
| × | 乘号 | × | × |
| ÷ | 除号 | ÷ | ÷ |
ISO 8859-1 (Latin-1)字符集
HTML 4.01 支持 ISO 8859-1 (Latin-1) 字符集。
备注:为了方便起见,以下表格中,“实体名称”简称为“名称”,“实体编号”简称为“编号”
| 显示 | 名称 | 编号 | 显示 | 名称 | 编号 | 显示 | 名称 | 编号 | 显示 | 名称 | 编号 | 显示 | 名称 | 编号 |
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| |   | ¡ | ¡ | ¡ | ¢ | ¢ | ¢ | £ | £ | £ | ¤ | ¤ | ¤ | |
| ¥ | ¥ | ¥ | ¦ | ¦ | ¦ | § | § | § | ¨ | ¨ | ¨ | © | © | © |
| ª | ª | ª | « | « | « | ¬ | ¬ | ¬ | ­ | ­ | ® | ® | ® | |
| ¯ | ¯ | ¯ | ° | ° | ° | ± | ± | ± | ² | ² | ² | ³ | ³ | ³ |
| ´ | ´ | ´ | µ | µ | µ | ¶ | ¶ | ¶ | · | · | · | ¸ | ¸ | ¸ |
| ¹ | ¹ | ¹ | º | º | º | » | » | » | ¼ | ¼ | ¼ | ½ | ½ | ½ |
| ¾ | ¾ | ¾ | ¿ | ¿ | ¿ | À | À | À | ? | Á | Á | Â | Â | Â |
| Ã | Ã | Ã | Ä | Ä | Ä | Å | Å | Å | Æ | Æ | Æ | Ç | Ç | Ç |
| È | È | È | ? | É | É | Ê | Ê | Ê | Ë | Ë | Ë | Ì | Ì | Ì |
| ? | Í | Í | Î | Î | Î | Ï | Ï | Ï | Ð | Ð | Ð | Ñ | Ñ | Ñ |
| Ò | Ò | Ò | ? | Ó | Ó | Ô | Ô | Ô | Õ | Õ | Õ | Ö | Ö | Ö |
| × | × | × | Ø | Ø | Ø | Ù | Ù | Ù | ? | Ú | Ú | Û | Û | Û |
| Ü | Ü | Ü | ? | Ý | Ý | Þ | Þ | Þ | ß | ß | ß | à | à | à |
| á | á | á | â | â | â | ã | ã | ã | ä | ä | ä | å | å | å |
| æ | æ | æ | ç | ç | ç | è | è | è | é | é | é | ê | ê | ê |
| ë | ë | ë | ì | ì | ì | í | í | í | î | î | î | ï | ï | ï |
| ð | ð | ð | ñ | ñ | ñ | ò | ò | ò | ó | ó | ó | ô | ô | ô |
| õ | õ | õ | ö | ö | ö | ÷ | ÷ | ÷ | ø | ø | ø | ù | ù | ù |
| ú | ú | ú | û | û | û | ü | ü | ü | ? | ý | ý | þ | þ | þ |
| ÿ | ÿ | ÿ |
数学和希腊字母标志 symbols, mathematical symbols, and Greek letters
| 显示 | 名称 | 编号 | 显示 | 名称 | 编号 | 显示 | 名称 | 编号 | 显示 | 名称 | 编号 | 显示 | 名称 | 编号 |
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| ? | ƒ | ƒ | Α | Α | Α | Β | Β | Β | Γ | Γ | Γ | Δ | Δ | Δ |
| Ε | Ε | Ε | Ζ | Ζ | Ζ | Η | Η | Η | Θ | Θ | Θ | Ι | Ι | Ι |
| Κ | Κ | Κ | Λ | Λ | Λ | Μ | Μ | Μ | Ν | Ν | Ν | Ξ | Ξ | Ξ |
| Ο | Ο | Ο | Π | Π | Π | Ρ | Ρ | Ρ | Σ | Σ | Σ | Τ | Τ | Τ |
| Υ | Υ | Υ | Φ | Φ | Φ | Χ | Χ | Χ | Ψ | Ψ | Ψ | Ω | Ω | Ω |
| α | α | α | β | β | β | γ | γ | γ | δ | δ | δ | ε | ε | ε |
| ζ | ζ | ζ | η | η | η | θ | θ | θ | ι | ι | ι | κ | κ | κ |
| λ | λ | λ | μ | μ | μ | ν | ν | ν | ξ | ξ | ξ | ο | ο | ο |
| π | π | π | ρ | ρ | ρ | ? | ς | ς | σ | σ | σ | τ | τ | τ |
| υ | υ | υ | φ | φ | φ | χ | χ | χ | ψ | ψ | ψ | ω | ω | ω |
| ? | ϑ | ϑ | ? | ϒ | ϒ | ? | ϖ | ϖ | ? | • | • | … | … | … |
| ′ | ′ | ′ | ″ | ″ | ″ | ? | ‾ | ‾ | ? | ⁄ | ⁄ | ? | ℘ | ℘ |
| ? | ℑ | ℑ | ? | ℜ | ℜ | ? | ™ | ™ | ? | ℵ | ℵ | ← | ← | ← |
| ↑ | ↑ | ↑ | → | → | → | ↓ | ↓ | ↓ | ? | ↔ | ↔ | ? | ↵ | ↵ |
| ? | ⇐ | ⇐ | ? | ⇑ | ⇑ | ? | ⇒ | ⇒ | ? | ⇓ | ⇓ | ? | ⇔ | ⇔ |
| ? | ∀ | ∀ | ? | ∂ | ∂ | ? | ∃ | ∃ | ? | ∅ | ∅ | ? | ∇ | ∇ |
| ∈ | ∈ | ∈ | ? | ∉ | ∉ | ? | ∋ | ∋ | ∏ | ∏ | ∏ | ∑ | ∑ | ∑ |
| ? | − | − | ? | ∗ | ∗ | √ | √ | √ | ∝ | ∝ | ∝ | ∞ | ∞ | ∞ |
| ∠ | ∠ | ∠ | ∧ | ∧ | ∧ | ∨ | ∨ | ∨ | ∩ | ∩ | ∩ | ∪ | ∪ | ∪ |
| ∫ | ∫ | ∫ | ∴ | ∴ | ∴ | ? | ∼ | ∼ | ∝ | ≅ | ≅ | ≈ | ≈ | ≈ |
| ≠ | ≠ | ≠ | ≡ | ≡ | ≡ | ≤ | ≤ | ≤ | ≥ | ≥ | ≥ | ? | ⊂ | ⊂ |
| ? | ⊃ | ⊃ | ? | ⊄ | ⊄ | ? | ⊆ | ⊆ | ? | ⊇ | ⊇ | ⊕ | ⊕ | ⊕ |
| ? | ⊗ | ⊗ | ⊥ | ⊥ | ⊥ | ? | ⋅ | ⋅ | ? | ⌈ | ⌈ | ? | ⌉ | ⌉ |
| ? | ⌊ | ⌊ | ? | ⌋ | ⌋ | ? | ⟨ | 〈 | ? | ⟩ | 〉 | ? | ◊ | ◊ |
| ? | ♠ | ♠ | ? | ♣ | ♣ | ? | ♥ | ♥ | ? | ♦ | ♦ |
重要的国际标记 markup-significant and internationalization characters
| 显示 | 名称 | 编号 | 显示 | 名称 | 编号 | 显示 | 名称 | 编号 | 显示 | 名称 | 编号 | 显示 | 名称 | 编号 |
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| " | " | " | & | & | & | < | < | < | > | > | > | ? | Œ | Œ |
| ? | œ | œ | ? | Š | Š | ? | š | š | ? | Ÿ | Ÿ | ? | ˆ | ˆ |
| ? | ˜ | ˜ | ? |   |   | ? |   |   | ? |   |   | ? | ‌ | ‌ |
| ? | ‍ | ‍ | ? | ‎ | ‎ | ? | ‏ | ‏ | – | – | – | — | — | — |
| ‘ | ‘ | ‘ | ’ | ’ | ’ | ? | ‚ | ‚ | “ | “ | “ | ” | ” | ” |
| ? | „ | „ | ? | † | † | ? | ‡ | ‡ | ‰ | ‰ | ‰ | ? | ‹ | ‹ |
| ? | › | › | ? | € | € |
表格转自:https://blog.csdn.net/xinzhu1990/article/details/7032301

浙公网安备 33010602011771号