qqxu
7/16/2018 - 3:56 AM

Javascript

read speaking javascript

基本值(Primitive Values)

基本值有: booleans,numbers,strings,null and defined 其他所有值都是:objects

基本值特征
  • 基于值进行比较

3 === 3    // true

'abc' === "abc"       // true

  • 始终不可变的 (Always immutable)
> var str = 'abc';

> str.length = 1; // try to change property `length`
> str.length      // ⇒ no effect
3

> str.foo = 3; // try to create property `foo`
> str.foo      // ⇒ no effect, unknown property
undefined

对象

所有非基本值的都是对象,常见的对象有

  • 普通对象:{ firstName: 'Jane', lastName: 'Doe' }
  • 数组:[ 'apple', 'banana', 'cherry' ]
  • 正则表达式: /^a+b+$/
对象的特征
  • 基于引用进行比较
> ({} === {})  // two different empty objects
false

> var obj1 = {};
> var obj2 = obj1;
> obj1 === obj2
true

  • 默认情况下是可变的
> var obj = {};
> obj.foo = 123; // add property `foo`
> obj.foo
123 

undefined

  • 未初始化的变量是undefined
> var foo;
> foo
undefined

  • 缺少参数是undefined
> function f(x) { return x }
> f()
undefined

  • 读取一个不存在的属性,返回undefined
> var obj = {}; // empty object
> obj.foo
undefined

null

null表示空对象。

undefinednull均没有属性

undefined and null have no properties, not even standard methods such as toString().

Booleans

布尔值有两个true、false。下面的操作符可以生成布尔值

  • 逻辑运算符 && , ||
  • 前缀运算符 !
  • 比较运算符
    • 等号操作符===, !==, ==, !=
    • 排序操作符(针对字符和数字类型):>, >=, <, <=

下面几种值,表示false值

  • undefined,null
  • false
  • 0, NaN
  • 空串''

空数组