JS 里的数据类型

2018-09-14  本文已影响0人  Jason_Shu
  1. 概述
    数据类型一共有7种,分别是数字(Number), 字符串(String),布尔值(Boolean), Symbol, null, undefined, 对象(Object)。(其中Symbol类型详见ES6)

数值(Number):整数和小数(如4,3.14)。
字符串(String): 文本("Hello World!")。
布尔值(Boolean): true(真), false(假)。
undefined: 表示“未定义”或不存在,即由于目前没有定义,所以此处暂时没有任何值。
null: 表示空值,即此处的值为空。
对象(object):各种值组成的集合。

其中对象还可以分为三类,分别是:狭义的对象(object), 数组(Array), 方法(function)。

  1. undefined和null
    好像只有JS有两个代表“空值”的语言。
    null表示空值,即该处的值现在为空。调用函数时,某个参数未设置任何值,这时就可以传入null,表示该参数为空。比如,某个函数接受引擎抛出的错误作为参数,如果运行过程中未出错,那么这个参数就会传入null,表示未发生错误。

undefined表示“未定义”,下面是返回undefined的典型场景。

//  变量声明了,但是没有赋值
var i;
i  // undefined

//  调用函数时,应该提供的参数没有提供,该参数等于undefined
function f(x) {
  return x;
}
f();  // undefined

//  对象没有赋值的属性
var obj = new Object();
obj.p  // undefined

// 函数没有返回值时,默认返回undefined
function f() {}
f()    // undefined

建议在声明某个变量,但是现在还没赋值时。对于除了对象以外的数据类型,用var a = null,对于对象类型,用var obj = undefined.

  1. typeof运算符
    判断变量的类型,返回一段字符串。
    七种数据类型用typeof运算基本返回对应的类型。比如:
typeof 123  // "number"

在概述中说,对象还分为狭义对象、数组和函数。数组返回的是object,但是函数返回function, null 返回object.

let arr = [];
let function = function() {};
typeof arr  //  "object";
typeof function //  "function";
typeof null;  //  "object"
  1. 布尔值
    如果 JavaScript 预期某个位置应该是布尔值,会将该位置上现有的值自动转为布尔值。转换规则是除了下面六个值被转为false,其他值都视为true。
undefined
null
false
0
NaN
""或者''(空字符串)

注意:空数组([])和空对象({})对应的布尔值都是true.

5.对象属性
在做练习的时候,对象属性让我有些疑惑,这里做一个记录解析。
首先我们要明确一个概念,就是对象(Object)中每一个key其实是字符串,就算我们这么声明:

var obj = {
  name: 'Jason',
  age: 18,
};

obj中的name和age都是字符串。在取对象属性时,有如下情况:

var obj = {
  name: 'Jason',
  age: 18,
};
obj['name']   //  'Jason'

obj['name']这是最正确书写方式,但是有一种特例写法,就是obj.name, 这种方式是默认‘.’后面的‘name’必须符合标识符才可行。

var obj = {
  '3+3' : 6,
  '6': 12,
  '9a': 9,
}
obj.9a  // 报错

如果写成obj[name]则是undefined,因为此处的name是个变量,没有指明变量name的值则为undefined。
如果[]中是个数字,则会自动转为字符串.

var obj = {
  '3+3' : 6,
  '6': 12,
}
obj[3+3]  // 12

obj[3+3]中会先计算出3+3=6,那么obj[3+3]就等价于obj[6],然后等价于obj['6'].

上一篇下一篇

猜你喜欢

热点阅读