JS学习--数据类型

185 阅读3分钟

一、类型分类

JS 中分为七种内置类型,七种内置类型又分为两大类型:基本类型和对象(Object)。

基本类型有六种: null,undefined,boolean,number,string,symbol(暂不涉及symbol)。

 数值(number):整数和小数:1 1.1 .1
                科学记数法:1.23e2
                二进制:0b11
                八进制:011(后来 ES5 添加了 0o11 语法)
                十六进制:0x11
字符串(string):文本(比如Hello World)。 
                 空字符串:''
                 多行字符串:
                 var s = '12345' +
                            '67890' // 无回车符号
                 或
                 var s = `12345
                 67890` // 含回车符号,长度是11
 布尔值(boolean):表示真伪的两个特殊值,即true(真)和false(假)
 undefined:表示“未定义”或不存在,即由于目前没有定义,所以此处暂时没有任何值
            (规范)如果一个变量没有被赋值,那么这个变量的值就是 undefiend
             (习俗)如果你想表示一个还没赋值的对象,就用null。如果你想表示一个还没赋值的
             字符串/数字/布尔/symbol,就用 undefined(但是实际上你直接 var xxx 一下就行了,
             不用写 var xxx = undefined)
 null:表示空值,即此处的值为空。
 对象(object):各种值组成的集合。
                object 就是上面几种基本类型(无序地)组合在一起
                object 里面可以有 object
                var person = {
                      name: 'Frank', 
                      'child': {
                          name: 'Jack'
                      }, // 最后这个逗号可有可无(ES3规定不写逗号,IE7以下支持;ES5规定写逗号,IE8以上支持)
                  }
                object 的 key 一律是字符串,不存在其他类型的 key
                object[''] 是合法的
                object['key'] 可以写作 object.key
                注意 object.key 与 object[key] 不同
                delete object['key']
                'key' in object

注意:数组array和函数function不属于数据类型,它们属于对象

二、typeof 运算符

JavaScript 有三种方法,可以确定一个值到底是什么类型。

 typeof运算符
 instanceof运算符(暂不涉及)
 Object.prototype.toString方法(暂不涉及)

PS:为什么会出现这种情况呢?因为在 JS 的最初版本中,使用的是 32 位系统,为了性能考虑使用低位存储了变量的类型信息,000 开头代表是对象,然而 null 表示为全零,所以将它错误的判断为 object 。虽然现在的内部类型判断代码已经改变了,但是对于这个 Bug 却是一直流传下来。

如果我们想获得一个变量的正确类型,可以通过 Object.prototype.toString.call(xx)。这样我们就可以获得类似 [Object Type] 的字符串。

三、null和undefined

null与undefined都可以表示“没有”,含义非常相似。将一个变量赋值为undefined或null,语法效果几乎没区别。

null表示空值,即该处的值现在为空。调用函数时,某个参数未设置任何值,这时就可以传入null,表示该参数为空。比如,某个函数接受引擎抛出的错误作为参数,如果运行过程中未出错,那么这个参数就会传入null,表示未发生错误。

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