JavaStript里面的数据类型

2019-02-23  本文已影响0人  印第安老斑鸠_333

一,数据类型都有哪些

Number,String,Boolean,Object,Undefined,Null,symbol(ES6);

以上七类,全了。typeof运算符返回的类型会有其他的结果,但是记住了就上面七类,就上面七类,就上面七类。另外像FunctionArray,他们都属于Object的子分类,并不是单独的一个数据类型,他们都属于上面七种里面的Object类型;

Object为复杂数据类型,其他为基本数据类型

二,如何查看一个值的数据类型

typeof运算符,返回一个字符串,该字符串会告诉你数据的类型。

    typeof  1;>>>>number

    typeof  '1';>>>>string

    typeof  true;>>>>boolean

    typeof undefined;>>>>undefine

    typeof symbol('a');>>>>symbol

    typeof  {};>>>>object

    typeof  [];>>>>boject

    typeof  null;>>>>object

    typeof function(){};>>>>function

三,数据类型详解

1,Number

Number数字or数值。凡是数值,它的数据类型就是Number。另外有一个叫做‘不是数’的值比较特殊,它也属于Number,就是NaN。

①,10;可以是整数。

②,10.1 / .1;可以是小数(如果小于1,可省略0)。

③,0b11;二进制的数。(0b开头)

④,0x11;十六进制的数。(0x开头)

⑤,077 / 0o77;八进制的数。(0开头,后面出现的数字小于8 / 0o开头)

ps:以上3~6三种数值,必须符合相对应进制的书写方法,比如0b33,0b开头表示二进制,但他并不是二进制,33是什么鬼?会报错的。

⑥,+0 / -0;(它们都是零)。

⑦,Infinity / -Infinity;(正无穷与负无穷)。

ps:JS里面,数值是有范围的,范围为2的1024次方到2的-1075次方之间(不包含),超出前者用Infinity表示,超出后者则为0;

⑧,102e3  / 102e-3;指数;(小数点前的数字多于21位,小数点后的零多于5个,JS会自动把数值转化成指数)。

⑨,NaN;(最特殊的一个,其含义为‘不是一个数’,但它是Number,主要出现在将字符串解析成数字出错或运算出错的场合)。

2,String

String字符串,一般用''或者""包裹起来的字符就是字符串。

①,如果字符串中存在'或者",需要用\转义,也可以双引包单引或单引包双引。

②,写代码时,如果你非要把字符串换行来写,可以,\回车或者用+运算符连接上下行字符串。

ps:用\转义要紧跟回车换行,\后不可有空格,因为\转义的就不是回车而是空格了。但是实际输出的还是一行字符串。在ES6中用``包裹字符串完美换行,无需任何操作。

③,反斜杠(\)在字符串内有特殊含义,用来表示一些特殊字符,所以又称为转义符。

       需要用反斜杠转义的特殊字符,主要有下面这些。

        \0 :null(\u0000)

        \b :后退键(\u0008)

        \f :换页符(\u000C)

        \n :换行符(\u000A)

        \r :回车键(\u000D)

        \t :制表符(\u0009)

        \v :垂直制表符(\u000B)

        \' :单引号(\u0027)

        \" :双引号(\u0022)

        \\ :反斜杠(\u005C)

④,转义符\可转义表示八进制,十六进制的字符串,可转义为对应编号的 Unicode 码点,会输出对应字符。

    (1)\HHH

    反斜杠后面紧跟三个八进制数(000到377),代表一个字符。HHH对应该字符的 Unicode 码点。

    (2)\xHH

    \x后面紧跟两个十六进制数(00到FF),代表一个字符。HH对应该字符的 Unicode 码点。

    (3)\uXXXX

    \u后面紧跟四个十六进制数(0000到FFFF),代表一个字符。XXXX对应该字符的 Unicode 码点。

PS:可用于变量名中,当然必须符合标识符命名规则,比如 var foo 写成 var f\u006F\u006F。  

④,关于Base64方法:

     全局函数 btoa() 能将字符串转为Base64编码

     全局函数 atob() 能将 Base64编码转为原来的编码

     要将非ASCII码字符转为Base64编码,必须中间插入一个转码环节

     Base64是一种基于64个可打印字符来表示二进制数据的表示方法。

        

3,Boolean

Boolean布尔值,一共两个值true,false。

①&&运算符;(全真则真,返回true,有假则假,返回false)。

②丨丨运算符;(全假则假,返回false,有真则真,返回true)。

4.Undefined 和 Null

undefinednull都表示没有值,至于 JS 为什么有两个都表示没有值,是因为这是设计之初的不合理造成的历史遗留问题。

①,如果一个变量没有被赋值,那么这个变量的值就是 undefiend,意思是未定义,例如 var a。

②,null,如果var a = null;就代表a的值为空,没有值,是个空的。

③,如果你想表示一个还没赋值的对象,就用 null。如果你想表示一个还没赋值的字符串/数字/布尔/symbol,就用 undefined(但是实际上你直接 var a 一下就行了,不用写 var a = undefined)。

ps:第一版的 JavaScript 里面,null就像在 Java 里一样,被当成一个对象,Brendan Eich 觉得表示“无”的值最好不是对象。其次,那时的 JavaScript 不包括错误处理机制,Brendan Eich 觉得,如果null自动转为0,很不容易发现错误。

因此,他又设计了一个undefined。区别是这样的:null是一个表示“空”的对象,转为数值时为0;undefined是一个表示"此处无定义"的原始值,转为数值时为NaN。

5,Object

Object对象。由{}包裹零个或多个键值对儿表示。它是复合类型的值,可以包含以上所有值。

例如:

            var object = {

                    a=1;

                    b='1';

                    c=null;

                    d=true;

                        ......

                }

①,array和function是它的子分类。

②,键名是字符串,当然你可以不加引号,前提必须符合标识符命名规则。可以object.key来引用,也可object['key']来表示(key为出数字则免引号)。

③,键名加上引号就可以超出标识符命名规则。如超出规则,必须object['key']来表示(key为出数字则免引号)。

④,键名为空字符串'',是合法的。

⑤,delete命令可删除对象的属性。

ps:删除自身属性,返回true且成功删除;删除继承属性,返回true但是失败;删除不存在的属性,也返回true;只有删除不可删除属性,返回false;

⑥,for...in..遍历对象。包括继承属性,但会跳过不可遍历属性,其遍历的属性的顺序是随机的。

⑦,查看一个对象本身的所有属性,可以使用Object.keys方法。

6,Symbol

Symbol类型,symbol方法生成一个symbol类型的值,它是全局唯一的值。唯一的值。

①,这样使用,symbol('xxx')。

ps:Symbol函数的参数只是表示对当前 Symbol 值的描述,因此相同参数的Symbol函数的返回值是不相等的。

②,比较一下,symbol('1') !== symbol('1');   //true。

③,Symbol 值不能与其他类型的值进行运算,会报错。

④,另外,Symbol 值也可以转为布尔值(true),但是不能转为数值。

⑤,Symbol 值可以显式转为字符串。

⑥,由于每一个 Symbol 值都是不相等的,这意味着 Symbol 值可以作为标识符,用于对象的属性名,就能保证不会出现同名的属性。这对于一个对象由多个模块构成的情况非常有用,能防止某一个键被不小心改写或覆盖。

⑦,详见http://es6.ruanyifeng.com/#docs/symbol

--------------------------------------------------------------------------------------------------------------------------------

                                                                                       引用:

                                                                                                   阮一峰的JS基础教程

                                                                                                   阮一峰的ES6入门

上一篇 下一篇

猜你喜欢

热点阅读