JavaScript浓缩咖啡
值和表达式
所有的值都是表达式,让我们来看一下例子:
42
这是一个表达式吗?一个值,还是都是?
答案是,这既是一个表达式也是一个值:
42 // 返回值得42
所有的值都是表达式,太简单了,除了这种简单的值表达式有没有其他类型的表达式?当然有:
"JavaScript" + "Allonge"
我们现在可以看到字符串类型的值,我们通过+号创建了整个一个大的表达式。
primitive类型
2 === 2//true
2 === "2"
true === false
上面几个都是primitive类型的,所以我们知道了,类型相等,值相等,它们就相等。
引用类型
[2 - 1,2,2 + 1] === [1,1 + 1,1 + 1 + 1]//false
是不是很奇怪?因为数组是引用类型,我们可以创建一个循环引用的数组像下面这样:
var arr = [];
arr[0] = arr;
我们刚刚创建了一个名字叫arr的数组,这个数组只有一项,并且指向的是自身。看起来没啥区别和我们上面的primitive类型,但是真实情况是每次你创建一个数组的时候,我们是在创建一个独立的值即使它的值和别的数组是一模一样的。同样的,我们这本书的主人公function也具备这种特性。