JS里的数据类型

js里共有其中基本数据类型:number、string、boolean、undefined、null、object、symbol.

  1. number
  • 整数和小数:(比如1和3.14)
  • 科学记数法:1.23e2
  • 二进制:0b11
  • 八进制:011(后来 ES5 添加了 0o11 语法)
  • 十六进制:0x11
  1. string
  • 空字符串:''
  • 多行字符串:
  var s = '12345' +
          '67890' // 无回车符号
  或
  var s = `12345
           67890` // 含回车符号
  1. boolean
    表示真伪的两个特殊值,即true(真)和false(假)
  • a && b 在 a 和 b 都为 true 时,取值为 true;否则为 false
  • a || b 在 a 和 b 都为 false 时,取值为 false;否则为 true

下列运算符会返回布尔值:

两元逻辑运算符: && (And),|| (Or)
前置逻辑运算符: ! (Not)
相等运算符:===,!==,==,!=
比较运算符:>,>=,<,<=

如果 JavaScript 预期某个位置应该是布尔值,会将该位置上现有的值自动转为布尔值。转换规则是除了下面六个值被转为false,其他值都视为true。

undefined
null
false
0
NaN
""或''(空字符串)
  1. undefined和null
    undefined:表示“未定义”或不存在,即由于目前没有定义,所以此处暂时没有任何值。
    null:表示空值,即此处的值为空。
    i. (规范)如果一个变量没有被赋值,那么这个变量的值就是undefined
    ii.(习俗)如果你想表示一个还没赋值的对象,就用 null。如果你想表示一个还没赋值的字符串/数字/布尔/symbol,就用 undefined(但是实际上你直接 var xxx 一下就行了,不用写 var xxx = undefined)

  2. object

  • object就是上面几种基本类型(无序地)组合在一起
  • object里面可以有object
var person = {
      name: 'Frank', 
      'child': {
          name: 'Jack'
      }, // 最后这个逗号可有可无
  }
  • object 的 key 一律是字符串,不存在其他类型的 key
  • object[''] 是合法的
  • object['key'] 可以写作 object.key (查看一个对象本身的所有属性,可以使用Object.keys方法。)
var obj = {
  key1: 1,
  key2: 2
};

Object.keys(obj);
// ['key1', 'key2']
  • 注意 object.key 与 object[key] 不同

  • delete object['key'] (delete命令用于删除对象的属性,删除成功后返回true。)

  • 'key' in object
    (in运算符用于检查对象是否包含某个属性(注意,检查的是键名,不是键值),如果包含就返回true,否则返回false。)

var obj = { p: 1 };
'p' in obj // true

(in运算符的一个问题是,它不能识别哪些属性是对象自身的,哪些属性是继承的。)

var obj = {};
'toString' in obj // true
上面代码中,toString方法不是对象obj自身的属性,而是继承的属性。但是,in运算符不能识别,对继承的属性也返回true。

6.symbol
Symbol 的用途:Symbol 可以创建一个独一无二的值(但并不是字符串)。
即:Symbol 生成一个全局唯一的值。
js中的symbol

7.typeof操作符

xxx 的类型 string number boolean symbol undefined null object function
typeof xxx 'string' 'number' 'boolean' 'symbol' 'undefined' 'object' 'object' 'function'

注意 function 并不是一个类型!

文章著作权归irwenjing所有,转载须说明来源

你可能感兴趣的:(JS里的数据类型)