教程集 www.jiaochengji.com
教程集 >  脚本编程  >  javascript  >  正文 《Eloquent JavaScript》笔记–值、类型、操作符

《Eloquent JavaScript》笔记–值、类型、操作符

发布时间:2016-09-19   编辑:jiaochengji.com
教程集为您提供《Eloquent JavaScript》笔记–值、类型、操作符等资源,欢迎您收藏本站,我们将为您提供最新的《Eloquent JavaScript》笔记–值、类型、操作符资源

计算机的世界里只有数据,除了数据以外,什么都没有。数据以一串比特来存储,比特可用任何2种取值的东西来表现,通常是0和1。
数字13用bit来写是这样的:

   0   0   0   0   1   1   0   1
 128  64  32  16   8   4   2   1

所以,13是0 0 0 0 1 1 0 1,8+4+1=13.

在现代计算机中,通常能够储存3百亿比特的信息,为了能够有效的处理这些比特,我们可以把比特分成许多块。在Javascript中, 这些块叫做值。Javascript中一共有6种基本类型的值:数值字符串布尔对象函数undefined

数值

Javascript使用64位比特存储数值型的值,对于N位的10进制的数字,能表示的总数是10的N次幂。在64位比特的情况下,一共能表现2的64次方个不同的数字(18后边18个0).
负号-和小数点.还要各占一位,实际能表现的大约是15个0左右。
受制于内存限制,当处理天文数字时,有内存溢出的可能。
对小数做运算会有误差。

数学运算
数值可以用+ – * / ()做运算,还有一个比较特别的%,叫求余运算,也有人叫取模,但求余更精确。

特殊的值
Javascript有3种特殊的数值。前2个是Infinity 和 -Infinity,分别表示正无穷和负无穷。Infinit-1
还是Infinit。这2个值是不可靠的,当他们参与数学运算时,结果很容易变成另一个特殊的值:NaN。
NaN代表“Not a Number”(不是数字),虽然它也属于数值类型。任何不准确或者无意义的运算结果都会得出NaN.比如,0/0,Infinit – Infinit.

字符串

字符串存储的是文本信息,用引号括起来。单引号和双引号都可使用,只要开头和结尾的引号匹配就可以。
Javascript使用/作为转义符号,/表示后面的字符有特殊含义。/n表示换行,/表示.

“A newline character is written like “/n””这句话可写成这样:

"A newline character is written like /"//n/"."

字符串无法做数学运算,但可以用+连接2个字符串。

一元操作符
操作2个值的运算符叫二元运算符,操作一个的叫一元操作符。如typeof,它产生一个字符串,该字符串是给定的值的类型。

console.log(typeof 4.5)
// → number
console.log(typeof "x")
// → string

布尔

布尔型有两种取值,ture和false。

console.log(3 > 2)
// → true
console.log(3 < 2)
// → false

字符串也可以比较:

console.log("Aardvark" < "Zoroaster")
// → true

Javascript根据Unicode标准做比较,在该标准中,所有字符都一个数字编码。Javascript从左到右比较字符的编码数字。大写字母永远“小于”小写字母所以“A”小于“z”返回true。
Javascript中只有一个值不等于它本身,就是NaN。

console.log(NaN == NaN)
// → false

NaN代表无意义的计算结果,它不等于任何其它无意义的运算结果。

逻辑运算符

当逻辑运算符&&,||,!和其它运算符混用时,||的优先级最低,然后是&&,接下来是比较运算符,最后是其它的运算符。

三元运算符

console.log(true ? 1 : 2);
// → 1
console.log(false ? 1 : 2);
// → 2

这个运算符也叫条件操作符,或者就叫他三元操作符,因为它是Javascript中唯一的三元操作符。
?左边的值决定另2个值哪一个被选择,当?左边的值是true时,中间的值生效,否则最后的值被选择。

undefined 值

null和undefined是两种特殊类型的值。他们常常表示缺少有意义的值,他们本身不包含任何信息。任何不合理的操作都会产生undefined,只是因为操作必须要产生一个值,最终就产生了undefined。

undefined和null的区别是Javascript设计上的一个事故,大多数情况无关紧要。可以想像成是一样的,更多信息在以后会介绍。

自动类型转换
Javascript可以接受任何输入,即使是奇怪的运算。

console.log(8 * null)
// → 0
console.log("5" - 1)
// → 4
console.log("5" + 1)
// → 51
console.log("five" * 2)
// → NaN
console.log(false == 0)
// → true

Javascript的操作符遇到值的类型不对时,它会自动转换类型,这被称作type coercion.
当一个值没有明显对应的数值时,比如“five”,他还是会被转换成数值NaN,对NaN运算还是产生NaN。

当2个不同类型的值做==操作时,Javascript通常会转换其中一个值。如果null或者undefined出现在==两端时,只有两端都是null或者undefined时,结果才是true,否则是false。

console.log(null == undefined);
// → true
console.log(null == 0);
// → false

最后一个特性很有用,当你想测试一个值真的有值,而不是null或undefined时,可以把他与null做比较(==或者!=)。

0、NaN、””(空字符串)会被自动转换层false。所以 0==false,””==false 返回true。

对于不想做类型转换时,使用===,和!==。

condole.log(""===false);
//false

Short-circuiting(短路求值)
&&和||在运算时,会把左侧的值类型转换成布尔型,并且根据操作符和结果返回左侧或右侧值。
||操作符会把左侧的值转换成布尔型,并且如果为真则返回左侧的值,否则返回右侧的值。

console.log(null || "user")
// → user
console.log("Karl" || "user")
// → Karl

||操作符的特点,可以让你设置一个默认的值,给他左侧设置一个表达式,如果表达式可能返回空值,则返回右侧的默认值。

&&操作符正好相反,如果左侧的值为false,则返回它,否则返回右侧的值。

这2个操作符的特点是,只有右侧的值是必要时,才会计算,否则程序不会计算。比如true || X,即使
X是具有毁灭性的表达式,也会返回真。因为X没有被计算,这叫做Short-circuiting(短路求值)。

条件操作符也是如此,只有第一个表达式会被计算,中间的和右边其中一个没有被选择的,不会被计算。

总结

本章介绍了4种基本值类型:数值,字符串,布尔型,undefined。

还有几种基本操作符。

最后

1.Infinity,-Infinity
2.NaN属于数值型,但是它不与本身相等
3.字符型值可以比较,根据Unicode编码来对比。
4.null和undefined一般情况可以当成是相同的。属于程序设计上失误。
5.Javascript的自动类型转换叫做type coercion.是不可靠的。
6.只有==两端都是null或undefined,结果是true。
7.===和!==不会做类型转换。
8.逻辑运算符和条件运算符,除非必要,否则右侧的表达式或值不会被计算,这叫做Short-circuiting(短路求值)。

您可能感兴趣的文章:
《Eloquent JavaScript》笔记–值、类型、操作符
jQuery源码分析系列
[javascript 学习笔记] 1. 面向对象
ES6引入的数据结构 – ES6 – ECMAScript特性 – Javascript核心
Laraverl Eloquent查询作用域和模型事件
Javascript – 函数里传的是值还是引用?
细说 jQuery 元素篇(二) – 选择符
《javascript语言精粹》学习笔记 – 继承
ES6特性概述 – ES6 – ECMAScript特性 – Javascript核心
c语言学习的简要笔记

[关闭]
~ ~